Yang ini terinspirasi oleh tantangan tabel perkalian terbaru Calvin Hobbies .
Tulis fungsi atau program yang mengambil integer N
sebagai input dan mencetak atau mengembalikan spiral multiplikasi unik N-by-N. Kode harus (dalam teori) bekerja untuk N antara 0 dan 1000 (mengeluarkan ini bisa jadi sulit). Output harus setara dengan tabel yang dihasilkan oleh prosedur berikut:
Isi tabel perkalian N-by-N. Misalnya untuk N = 3:
1 2 3 2 4 6 3 6 9
Ikuti spiral searah jarum jam dari sudut kiri atas, perhatikan angka yang Anda kunjungi. Ketika Anda mengunjungi nomor yang sudah Anda kunjungi, gantilah dengan 0.
Beberapa contoh mungkin membuatnya lebih jelas:
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
Jumlahnya ditemukan seperti ini:
Setiap format output yang masuk akal diterima, tetapi harus berupa matriks N-by-N, tidak bisa hanya daftar. Format seperti yang di bawah ini diterima, karena ada N kolom 1-by-N yang mudah dibedakan, atau baris N-by-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
Kode terpendek dalam byte menang.
n=0
mana tidak ada nol dalam tabel perkalian. Saya bisa mengerti n=1
akan menghasilkan 1, tetapi mengapa termasuk nol?
n=0
harus berupa matriks 0-by-0, atau pertanyaannya tidak konsisten.