これは、カルビンの趣味の最近の乗算表の挑戦に触発されています。
N入力として整数を受け取り、N行N列の一意の乗算スパイラルを出力または返す関数またはプログラムを作成します。コードは(理論上)0から1000の間のNで動作する必要があります(これを出力するのは難しい場合があります)。出力は、次の手順で作成されたテーブルと同等である必要があります。
N行N列の乗算テーブルに入力します。たとえば、N = 3の場合:
1 2 3 2 4 6 3 6 9左上隅から時計回りにらせん状に進み、訪れた数字に注意してください。すでに訪問した番号にアクセスするときは、0に置き換えます。
いくつかの例を使用すると、より明確になります。
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
番号は次のように見つかります。
適切な出力形式はすべて使用できますが、N行N列の行列である必要があり、単なるリストにすることはできません。簡単に区別できるN個の1行N列またはN行1列が存在するため、以下のような形式が受け入れられます。
[[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
バイト単位の最短コードが勝ちます。
n=0乗算表にゼロがない場合に出力があるのはなぜですか。私n=1は出力1 を理解することができますが、なぜゼロを含めるのですか?
n=0必要があるため、出力は0行0列の行列である必要があります。そうしないと、質問に矛盾が生じます。



