A Latin persegi adalah persegi yang ada telah berulang simbol baik dalam X atau kolom Y . Sebagai contoh:
ABCD
DABC
CDAB
BCDA
adalah salah satu kotak tersebut. Perhatikan bagaimana setiap kolom dan baris berisi permutasi dari 4 huruf yang sama.
Namun, persegi Latin kami memiliki masalah: Jika saya memutar baris kedua ( DABC
) 1 ke kiri, saya akan berakhir dengan ABCD
, yang identik dengan permutasi di atasnya. Jika tidak mungkin untuk memutar 1 kolom / baris dan mendapatkan kolom / baris lain, maka kami menganggap kuadrat tersebut aman untuk dirotasi .
Sebagai contoh:
ABCD
BDAC
CADB
DCBA
Apakah rotasi aman. Kotak memiliki properti berikut:
- Titik [0, N] menggunakan simbol Nth
- Titik [0, N] dan [N, 0] selalu merupakan simbol yang sama . (Saya juga ingin mengatakan bahwa [x, y] dan [y, x] juga selalu merupakan huruf yang sama, tetapi saya tidak dapat membuktikannya)
Tugas Anda adalah mencetak 1 kotak Latin yang aman untuk rotasi, ketika dilewatkan N. Saya tidak peduli jika Anda mengeluarkan huruf, angka, daftar, atau array 2D. Jika Anda menggunakan angka, kolom dan baris atas harus 0,1,2,3,...
(dalam urutan itu). Jika Anda menggunakan huruf, maka itu harusA,B,C,D,....
Misalnya, jika input Anda adalah 4, Anda harus mencetak:
0,1,2,3 0,1,2,3
1,3,0,2 or 1,0,3,2
2,0,3,1 2,3,1,0
3,2,1,0 3,2,0,1
Tidak ada kotak Latin aman rotasi dengan ukuran kurang dari 4. Saya tidak peduli apa program Anda lakukan jika N kurang dari 4. Untuk yang ingin tahu, jumlah kotak aman rotasi adalah (mulai dari 4): 2,5,5906,(too long to calculate)
Ini adalah kode-golf , jadi cobalah membuat jawaban sesingkat mungkin dalam bahasa favorit Anda!
1,2,3,...
?
N
kualitas acak yang kurang?)