는 n의에서 수상했다 누가 확인하는 가장 짧은 프로그램 만들기 D 콩알 만 발가락 게임.
n
(너비) 및 d
(치수)가 다음 범위에 있을 때 프로그램이 작동해야 합니다.
n∈[3,6]∩ℕ ie a number from this list: 3,4,5,6
d∈[2,5]∩ℕ ie a number from this list: 2,3,4,5
n = 3; d = 2
(3 2 즉 3 x 3) :
[][][]
[][][]
[][][]
n = 3; d = 3
(3 3 즉 3 by 3 by 3) :
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
n = 6; d = 2
(6 2 즉 6 x 6) :
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
등등.
승리 (다차원 틱택 토를 충분히 연주 한 경우에도 마찬가지입니다.)
승리하기 위해서는 한 선수가 라인을 따라 인접한 모든 사각형을 가져야합니다. 즉, 해당 플레이어는 n
승자가 되려면 한 줄로 이동 해야합니다 .
인접 :
- 각 타일은 점입니다. 예를 들어 (0,0,0,0,0)은
d=5
- 인접한 타일들은 타일들이 같은 유닛 d- 큐브상의 두 지점들입니다. 즉, 타일 사이의 체비 쇼프 거리는 1입니다.
- 다시 말해서, 점이 점
p
에 인접하면, 대응하는 좌표의q
모든 좌표는 1만큼 차이가 없습니다. 또한 적어도 좌표 쌍이 정확히 하나 다릅니다.p
q
윤곽:
- 선은 벡터와 타일로 정의됩니다. 라인은 방정식에 의해 각 타일이 맞습니다.
p0 + t
<
some vector with the same number of coordinates as p0>
입력 :
입력은 STDIN입니다. 입력의 첫 번째 라인은 두 수있을 것이다 n
및 d
형태 n,d
.
그 후에 행해진 이동을 지정하는 좌표로 구성된 선이됩니다. 좌표는 다음 형식으로 표시됩니다 1,1;2,2;3,3
. 왼쪽 상단이 원점입니다 (2D의 경우 0,0). 일반적인 경우,이 목록은 1,2,...,1,4;4,0,...,6,0;...
첫 번째 숫자가 왼쪽-오른쪽, 두 번째 위-아래, 3-3 차원 등을 나타내는 위치와 같습니다. 첫 번째 좌표는 X
첫 번째 회전이고 두 번째는 이다 O
최초의 회전, ...
입력 다음에 개행이옵니다.
출력 :
출력은 STDOUT이됩니다. 누군가 이겼거나 동점이라면 누가 이겼는지 표시하십시오. 동점이나 승리가 아닌 경우 아무것도 출력하지 마십시오.
또한 이동 충돌이 있는지, 즉 동일한 위치에 둘 이상의 이동이있는 경우 표시하십시오.
입력이 끝나기 전에 승리 / 무승부가 있었다면 프로그램은 원하는대로 할 수 있습니다.
테스트 사례 (누가 더 이상 제안하고 싶은가?) :
입력:
4,3
0,0,0;1,1,1;1,0,1;2,0,2;0,0,1;2,0,0;2,0,1;3,0,2;3,0,1
출력 예 :
X wins
또 다른 가능한 출력 (설명 필요) :
1
n
승자가 되려면 한 줄로 이동 하는 것을 정의해야합니다 . (샌드 박스에이 발언을 게시하지 못해서 죄송하지만 샌드 박스를 게시 한 직후 게시 되었기 때문에 그 내용을 볼 시간조차 없었습니다.)