문제:
체스에서는 반복에 의한 추첨에 대해 다소 잘 알려진 규칙이 있습니다. 동일한 위치가 3 회 이상 반복되면,이 반복을 유발할 이동을하려는 플레이어는 무승부를 요구할 수 있습니다.
마지막 몇 번의 움직임 만 플레이어가 앞뒤로 움직이는 경우 중재인이 쉽게 발견 할 수있는 작업입니다. 반복되는 위치 사이에서 조각이 크게 움직일 때 때로는 사소하지 않습니다.
이 문제의 문제는 주장 된 위치가 반복에 의해 그려지면 (3 회 이상 보았을 경우) 진실한 값을 출력하고, 좌표 표기법으로 이동 목록이 주어지면 주장 된 위치가 반복적으로 그려지지 않으면 거짓된 값을 출력하는 것입니다. 아래에 설명 된대로 또는 선택한 표기법을 사용합니다 (그러나 테스트 사례를 변환해야합니다).
직책은 무엇입니까?
실제 시나리오에서, 위치는 플레이어가 캐슬을 할 수 있는지 또는 범인이 가능한지와 같은 것들에 의해 영향을받을 것이다; 문제점에 대한 솔루션에서이를 고려 해서는 안됩니다 . 이 문제에서 위치는 단순히 보드의 조각 구성에 의해 정의됩니다. 따라서이 문제의 목적을 위해 두 보드의 각 정사각형이 동일한 유형의 동일한 색상 조각으로 채워져 있으면 두 위치가 동일한 것으로 보입니다. 예를 들어 백인 기사들이 정사각형을 바꿀 수있는 정확한 조각 일 필요는 없으며 다른 모든 조각이 기준을 충족하면 여전히 동일한 위치에있게됩니다.
유효한 표기법은 무엇입니까?
좌표 표기법을 계속 설명하지만, 선택한 표기법 시스템으로 자유롭게 입력 할 수 있습니다. 제공 :
- 표기법의 각 항목은 다음 중 하나 또는 모두를 설명합니다. 수표, 수표, 이중 수표, 수표 또는 교착 상태 여부; 동반자 캡처가 발생한 경우; 초기 위치; 최종 위치.
- 표기법에 반복에 대한 정보 가 없을 수 있습니다 .
이러한 기준이 충족되는 한, 답변, 표기법에 명시되어있는 한 기꺼이 받아들입니다. 이것은 예를 들어 0 인덱스 행, 열 튜플 또는 프로그램에 적합한 것이 될 수 있습니다.
좌표 표기법
좌표 표기법은 동작을 좌표 시스템으로 만 설명하는 표기법입니다.
이동은 먼저 세트에서 초기 좌표로, {A1-H8}
그런 다음 동일한 세트에서 대상 좌표로 다시 설명됩니다. 따라서 King 's Gambit 은 (줄 모음으로)
{"E2-E4","E7-E5","F2-F4"}
나는이 문제에 사용하는 것이 가장 좋은 표기법이라고 생각합니다. 왜냐하면 검사가 발생했는지 또는 조각 이동 유형과 같은 외부 정보로 가득 차 있지 않기 때문입니다. 이전에 언급 된 표기법을 선택할 수 있으므로 대수 표기법 과 같은 다른 표기법을 사용 하거나이 표기법을 적용 할 수 있습니다 (예 : 대시를 제거하거나 튜플 목록으로 사용).
규칙 :
- 당신은해야 하지 가 반복 발생 여부 만, 위치 또는 이동이 유효한지 여부를 고려
- 거세 및 폰 프로모션이 발생 하지 않을 것이라고 가정 할 수 있습니다.
- 문자열 목록을 입력으로 가져 와서 마지막 이동에서 세 번째 (또는 그 이상) 반복이 발생했는지 여부에 해당하는 참 또는 거짓 값을 출력해야합니다.
- 게임은 항상 체스의 표준 시작 위치에서 시작합니다. 초기 위치는 반복으로 계산 될 수 있습니다.
- 최종 이동으로 위치가 반복되지 않으면 반복에 의한 드로우가 발생하지 않습니다
일반 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하지 마십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙 은 기본 I / O 규칙으로 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트와 링크를 추가하십시오 (예 : TIO ).
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례
다음에 대해 진실한 값을 반환해야합니다.
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8"}
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8"}
{"B1-C3","B8-C6","D2-D4","D7-D5","D1-D3","D8-D6","C3-B1","C6-B8","B1-C3","B8-C6","D3-D1","D6-D8","D1-D3","D8-D6"}
{"D2-D4","B8-C6","E2-E4","C6-D4","D1-E2","D4-E6","E2-F3","E6-D4","F3-D1","D4-C6","D1-E2","C6-D4","E1-D1","D4-C6","D1-E1","C6-D4"}
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3"}
그리고 잘못된 값 :
{}
{"E2-E4","E7-E5","F2-F4"}
{"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","F2-F4","F7-F5"}
{"E2-E4","E7-E5","G1-F3","B8-C6","F1-C4","G8-F6","F3-G5","D7-D5","E4-D5","F6-D5","G5-F7"}
{"D2-D4","B8-C6","E2-E4","C6-D4","D1-E2","D4-C6","E2-D1","C6-D4","D1-E2","D4-C6","E2-D1"}
{"B1-C3","B8-C6","C3-B5","C6-B4","B5-D4","B4-D5","D4-C6","D5-C3","C6-B8","C3-B1","B8-C6","B1-C3","C6-B8","C3-B1"}
{"E2-E4","E7-E5","D1-E2","E8-E7","E1-D1","D8-E8","E2-E1","E7-D8","E1-E2","E8-E7","E2-E1","E7-E8"}
C6-B8
위치 이후에 초기 위치는 세 번 발생했습니다.