Latin karesi, X veya Y sütunlarında yinelenen sembol içermeyen bir karedir . Örneğin:
ABCD
DABC
CDAB
BCDA
böyle bir karedir. Her sütun ve satırın aynı 4 harfin permütasyonunu nasıl içerdiğine dikkat edin.
Bununla birlikte, Latin karemizin bir sorunu var: İkinci satırı ( DABC) 1 sola döndürürsem, sonuçta ABCDyukarıdaki permütasyonla aynı olur. Herhangi bir 1 sütunu / satırı döndürmek ve başka bir sütun / satır elde etmek mümkün değilse , karenin dönüş güvenli olduğunu düşünüyoruz .
Örneğin:
ABCD
BDAC
CADB
DCBA
rotasyon güvenlidir. Izgara aşağıdaki özelliklere sahiptir:
- Nokta [0, N], N. Sembolünü kullanır
- [0, N] ve [N, 0] noktaları her zaman aynı semboldür . (Ayrıca [x, y] ve [y, x] 'nin de her zaman aynı mektup olduğunu söylemek isterim, ancak ispat edemiyorum)
Senin görevin N geçtiğinde 1 döndürme güvenli Latin kare yazdırmaktır. Ben harfler, sayılar, bir liste veya bir 2D dizi çıktı umurumda değil. Sayı kullanırsanız, üst sütun ve satır 0,1,2,3,...(bu sırayla) olmalıdır. Harf kullanırsanız,A,B,C,D,....
Örneğin, girdiniz 4 ise aşağıdakilerden birini yazdırmalısınız:
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'ten küçük boyutta döndürme güvenli Latin kareleri yoktur. N 4'ten küçükse programınızın ne yaptığı umurumda değil. Meraklı olarak, döndürme güvenli karelerin sayısı (4'ten başlayarak): 2,5,5906,(too long to calculate)
Bu bir kod golf , bu yüzden en sevdiğiniz dilde cevapları mümkün olduğunca kısa yapmaya çalışın!
1,2,3,...mi?
Nolarak yetersiz rasgele sayı kalitesi nedeniyle yüksek değerleri için sonlandırılmaları garanti edilmiyorsa izin verilir mi?)