ละตินตารางเป็นตารางที่ไม่มีสัญลักษณ์ซ้ำทั้งใน X หรือ Y คอลัมน์ ตัวอย่างเช่น:
ABCD
DABC
CDAB
BCDA
เป็นหนึ่งในจตุรัสดังกล่าว สังเกตว่าทุกคอลัมน์และแถวมีการเรียงสับเปลี่ยนของตัวอักษร 4 ตัวเดียวกัน
อย่างไรก็ตามจตุรัสละตินของเรามีปัญหา: หากฉันต้องหมุนแถวที่สอง ( DABC
) 1 ไปทางซ้ายฉันจะลงเอยด้วยABCD
ซึ่งเหมือนกับการเปลี่ยนรูปด้านบน ถ้ามันเป็นไปไม่ได้ที่จะหมุน 1 คอลัมน์ / แถวและคอลัมน์อื่นได้รับ / แถวแล้วเราพิจารณาตารางที่จะปลอดภัยในการหมุน
ตัวอย่างเช่น:
ABCD
BDAC
CADB
DCBA
การหมุนปลอดภัย ตารางมีคุณสมบัติดังต่อไปนี้:
- จุด [0, N] ใช้สัญลักษณ์ Nth
- จุด [0, N] และ [N, 0] เป็นสัญลักษณ์เดียวกันเสมอ (ฉันอยากจะบอกว่า [x, y] และ [y, x] เป็นตัวอักษรเดียวกันเสมอ แต่ฉันไม่สามารถพิสูจน์ได้)
งานของคุณคือการพิมพ์ละตินสแควร์แบบหมุนได้ 1 อันเมื่อผ่าน N. ฉันไม่สนใจว่าคุณจะพิมพ์ตัวอักษรตัวเลขรายการหรืออาร์เรย์ 2D หากคุณใช้ตัวเลขคอลัมน์และแถวบนสุดจะต้องเป็น0,1,2,3,...
(ตามลำดับนั้น) หากคุณใช้ตัวอักษรมันจะต้องเป็นA,B,C,D,....
ตัวอย่างเช่นหากอินพุตของคุณเป็น 4 คุณควรพิมพ์:
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
ไม่มีละตินสี่เหลี่ยมหมุนปลอดภัยขนาดน้อยกว่า 4 ฉันไม่สนใจสิ่งที่โปรแกรมของคุณถ้า N น้อยกว่า 4 สำหรับอยากรู้อยากเห็นจำนวนสี่เหลี่ยมหมุนปลอดภัยหมุนคือ (เริ่มต้นที่ 4): 2,5,5906,(too long to calculate)
นี่คือรหัสกอล์ฟดังนั้นพยายามหาคำตอบให้สั้นที่สุดในภาษาที่คุณโปรดปราน!
1,2,3,...
หรือไม่
N
เนื่องจากคุณภาพของจำนวนสุ่มไม่เพียงพอ)