라틴 정사각형은 X 또는 Y 열에 반복되는 기호가없는 정사각형입니다 . 예를 들면 다음과 같습니다.
ABCD
DABC
CDAB
BCDA
그런 광장 중 하나입니다. 모든 열과 행에 동일한 4 개의 순열이 어떻게 포함되어 있는지 확인하십시오.
그러나 라틴어 광장에는 문제가 있습니다. 두 번째 행 ( DABC
) 1을 왼쪽 으로 회전하면 ABCD
위의 순열과 동일한으로 끝납니다 . 1 개의 열 / 행을 회전시킬 수없고 다른 열 / 행을 얻는 것이 불가능 하다면 , 정사각형이 회전 안전하다고 간주합니다 .
예를 들면 다음과 같습니다.
ABCD
BDAC
CADB
DCBA
회전 안전입니다. 그리드에는 다음과 같은 속성이 있습니다.
- 점 [0, N]은 N 번째 기호를 사용합니다.
- 포인트 [0, N]과 [N, 0]은 항상 같은 기호 입니다. ([x, y]와 [y, x]도 항상 같은 글자라고 말하고 싶지만 증명할 수는 없습니다)
당신의 임무는 N을 통과했을 때 회전 안전 라틴 사각형 1 개를 인쇄하는 것입니다. 문자, 숫자, 목록 또는 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보다 작 으면 프로그램이 수행하는 작업은 중요하지 않습니다. 2,5,5906,(too long to calculate)
이것은 코드 골프 이므로 원하는 언어로 가능한 한 빨리 답변하십시오!
1,2,3,...
?
N
불규칙한 난수 품질로 인해 높은 값으로 종료되는 것을 기술적으로 보장하지 않는 경우 허용 됩니까?)