Dieser ist inspiriert von Calvins jüngster Herausforderung an der Multiplikationstabelle .
Schreiben Sie eine Funktion oder ein Programm, das eine ganze Zahl N
als Eingabe verwendet und eine N-mal-N-Multiplikationsspirale ausgibt oder zurückgibt. Der Code muss (theoretisch) für N zwischen 0 und 1000 funktionieren (dies auszugeben kann jedoch schwierig sein). Die Ausgabe sollte der nach dem folgenden Verfahren erstellten Tabelle entsprechen:
Füllen Sie eine N-mal-N-Multiplikationstabelle aus. ZB für N = 3:
1 2 3 2 4 6 3 6 9
Folgen Sie einer Spirale im Uhrzeigersinn von der oberen linken Ecke und notieren Sie sich die Zahlen, die Sie besuchen. Wenn Sie eine Nummer besuchen, die Sie bereits besucht haben, ersetzen Sie sie durch 0.
Ein paar Beispiele könnten es klarer machen:
n = 0:
0
n = 1:
1
n = 2: // Spiral order:
1 2 // 1 2
0 4 // 4 3
n = 3:
1 2 3 // 1 2 3
0 4 6 // 8 9 4
0 0 9 // 7 6 5
n = 4:
1 2 3 4 // 1 2 3 4
0 0 6 8 // 12 13 14 5
0 0 9 12 // 11 16 15 6
0 0 0 16 // 10 9 8 7
n = 5:
1 2 3 4 5
0 0 6 8 10
0 0 9 12 15
0 0 0 16 20
0 0 0 0 25
n = 10:
1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 12 14 16 18 20
0 0 0 0 15 0 21 24 27 30
0 0 0 0 0 0 28 32 36 40
0 0 0 0 25 0 35 0 45 50
0 0 0 0 0 0 42 48 54 60
0 0 0 0 0 0 49 56 63 70
0 0 0 0 0 0 0 64 72 80
0 0 0 0 0 0 0 0 81 90
0 0 0 0 0 0 0 0 0 100
Die Zahlen sind wie folgt zu finden:
Jedes vernünftige Ausgabeformat wird akzeptiert, es muss jedoch eine N-mal-N-Matrix sein, es kann nicht nur eine Liste sein. Formate wie die folgenden werden akzeptiert, da es N leicht unterscheidbare 1-mal-N-Spalten oder N-mal-1-Zeilen gibt:
[[1 2 3][0 4 6][0 0 9]] <-- OK
[[1 0 0][2 4 0][3 6 9]] <-- OK
ans = <-- OK
1 2 3
0 4 6
0 0 9
Kürzester Code in Bytes gewinnen.
n=0
es in den Multiplikationstabellen keine Null gibt? Ich kann verstehen, n=1
würde 1 ausgeben, aber warum Null einschließen?
n=0
eine 0-mal-0-Matrix sein, da sonst die Frage inkonsistent wäre.