바운티
1 위 ( 수상 )
첫 번째 유효한 답변에 50 명의 담당자를 던질 것입니다.
2 위 ( 수상 )
가장 짧은 유효한 답변에 대해 다른 100 명의 담당자를 처리합니다.
No. 3 ( 투고 가능 )
유효 답변이 훨씬 짧은 첫 번째 담당자는 200 명을 처리합니다. 현재 가장 짧은 답변의 최대 45 % ( 564 바이트 x 0.45 = 최대 254 바이트 ) 가 중요 합니다.
게임
당신은 고전 게임 " 나인 멘스 모리스 "또는 단순히 " 밀 "을 기억하십니까? 변형 가능한 틱택 토와 비슷한 Three Men 's Morris 라는 변형이 있습니다 .
규칙
이것은 게임의 빈 보드입니다.
a b c
1 [ ]–[ ]–[ ]
| \ | / |
2 [ ]–[ ]–[ ]
| / | \ |
3 [ ]–[ ]–[ ]
[ ]
필드이며 |–/\
해당 필드 사이의 경로를 나타냅니다.
이 게임은 두 선수에 의해 연주 1
와 2
보드에 각 장소를 누가 3 토큰을. 이것은 실제로 이미 일어 났고 우리는 게임에 있습니다. 한 플레이어가 mill
플레이어의 3 개 토큰의 세로 또는 가로 행인 a 를 형성 할 수 있으면 게임에서 승리합니다 .
이 규칙에 따라 토큰을 연결선을 따라 보드에서 이동할 수 있습니다.
인접한 빈 위치 (즉, 모서리 위치에서 중심으로 또는 중심에서 모서리 위치로 또는 모서리 위치에서 인접 모서리 위치로)
인접한 빈 위치가 없으면 플레이어는 이동을 건너 뛰어야합니다.이 경우 이동을 건너 뜁니다.
도전
당신은 선수 1
이고 당신의 움직임은 다음입니다. 다음을 결정하는 프로그램 또는 함수를 작성하십시오.
- 당신은 2 이하의 움직임으로 승리를 강요 할 수 있습니다 ( 확실한 승리 )
- 상대방이 실수를하면 2 번 이하로 이길 수 있습니다 (승리 가능 )
- 당신은 당신이 더 이동해야하기 때문에, 2 이하 움직임에 이길 수 없다 또는 강제 이동이 이길 상대를 리드하기 때문에 ( 불가능 승리 )
요구 사항
- 상대방을 죽일 때 확실히이기는 경우에도 프로그램은 유한 한 시간 안에 완료되어야합니다.
- 프로그램이나 함수를 작성할 수 있습니다.
입력
선수들은으로 표시됩니다 1
및 2
. 0
자유 필드를 정의합니다. 입력을 행렬 또는 배열로 취할 수 있습니다.
명확한
A B C D
2 1 0 | 2 1 0 | 1 0 1 | 1 2 2
2 1 2 | 0 1 0 | 1 0 2 | 2 1 O
0 0 1 | 2 2 1 | 0 2 2 | O O 1
A: [2,1,0,2,1,2,0,0,1]
B: [2,1,0,0,1,0,2,2,1]
C: [1,0,1,1,0,2,0,2,2]
D: [1,2,2,2,1,0,0,0,1]
가능한
A B C
1 0 1 | 1 0 1 | 1 2 2
1 2 2 | 1 2 0 | 0 0 1
2 0 0 | 2 0 2 | 2 1 0
A: [1,0,1,1,2,2,2,0,0]
B: [1,0,1,1,2,0,2,0,2]
C: [1,2,2,0,0,1,2,1,0]
불가능한
A B
1 0 0 | 1 2 0
1 2 2 | 2 1 0
2 0 1 | 1 2 0
A: [1,0,0,1,2,2,2,0,1]
B: [1,2,0,2,1,0,1,2,0]
산출
당신의 프로그램은 스마일리를 출력 / 반환해야합니다 :
- 확실한 승리 :
:)
- 가능한 승리 :
:|
- 이길 수 없음 :
:(
예
두 번의 움직임으로 확실한 승리 :
[2][1][ ] 1. [2][1][ ]
[2][1][2] -> [2][1][2]
[ ][ ][1] [ ][1][ ]
[2][1][ ] 1. [2][1][ ] [ ][1][ ] 2. [ ][ ][1]
[ ][1][ ] -> [ ][ ][1] -> [2][ ][1] -> [2][ ][1]
[2][2][1] [2][2][1] [2][2][1] [2][2][1]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][ ][2] -> [1][ ][2] -> [1][ ][2] -> [ ][ ][2]
[ ][2][2] [ ][2][2] [2][ ][2] [2][ ][2]
두 가지 움직임으로 가능한 승리 :
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][2][2] 1. [ ][2][2] [2][ ][2] 2. [1][2][2]
[ ][ ][1] -> [1][ ][1] -> [1][ ][1] -> [1][1][1]
[2][1][ ] [2][1][ ] [2][1][ ] [2][ ][ ]
두 가지 움직임으로 이길 수 없습니다.
[1][ ][ ]
[1][2][2]
[2][ ][1]
보너스
확실한 승리가 가능하고 프로그램이 a1:a2
(1 이동) 또는 a1:a2,a3:b2
(2 이동) 과 같이 성공의 한 가지 방법으로 이동을 출력하는 경우 바이트 수의 30 % 를 철회 할 수 있습니다 .
이것은 코드 골프입니다 – 바이트 단위의 최단 답변이 이깁니다. 표준 허점은 허용되지 않습니다.
샌드 박스의 결함을 수정하고 표현을 개선 한 Peter Taylor 에게 감사합니다 .
[1,0,0,2,1,0,2,2,1]
, 2 번 선수는 움직일 수 없습니다-1 번 선수의 승리입니까?