내가 요즘에 생각했던 흥미로운 문제가 있는데, 여기에는 코드의 특성뿐만 아니라 다른 코드의 비트에 대해 게임을함으로써 다른 비트의 코드와 경쟁하는 코드가 포함됩니다.
당신의 임무는 Go 보드의 현재 상태를 취하는 프로그램을 구축하고 무엇을 할 것인지 결정하는 것입니다.
프로그램은 다음을 입력으로 받아들입니다.
현재 Go 보드에있는 조각을 나타내는 19 개의 줄로 구성된 19 개의 줄. 의 문자
0
는 빈 사각형 을 나타내고1
검은 색2
이며 흰색입니다.각 플레이어가 가진 포로 수를 나타내는 두 숫자 (검은 색, 흰색).
자신의 차례를 나타내는 숫자 (흑백). 위와 같이
1
검은 색2
이며 흰색입니다.
다음 중 하나를 출력하십시오.
a b
이동할 좌표를 나타내는 한 쌍의 좌표 입니다.1 1
는 왼쪽 위 사각형이며 첫 번째와 두 번째 숫자는 각각 아래로 이동하고 오른쪽으로 이동하는 것을 나타냅니다.pass
전달할 이동을 나타내는 문자열
예를 들어, 프로그램은 다음 입력을 수신 할 수 있습니다.
0000000000000000000
0000000000000000000
0000000000000000000
0001000000000002000
0000000000000000000
0000000000000000000
0001210000000000000
0000100000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0002000000000001000
0000000000000000000
0000000000000000000
0000000000000000000
0 0 1
이는 몇 번의 움직임 만 수행 된 게임을 나타냅니다.
그런 다음 프로그램이 출력 될 수 있습니다. 6 5
즉, "위에서 6 위, 왼쪽에서 5 위에 검은 돌을 놓습니다". 이것은에서 하얀 돌을 잡을 것입니다 7 5
. 그런 다음 보드 상태는 다음과 같이 변경됩니다.
0000000000000000000
0000000000000000000
0000000000000000000
0001000000000002000
0000000000000000000
0000100000000000000
0001010000000000000
0000100000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0002000000000001000
0000000000000000000
0000000000000000000
0000000000000000000
1 0 2
(흰 돌이 포획되었지만 검은 수감자로 간주됩니다.)
코드는 다음 속성을 추가로 만족시켜야합니다.
프로그램에 동일한 입력 상태가 제공되면 항상 동일한 출력을 생성해야합니다. 이것이 Go AI의 결정론입니다. 임의의 구성 요소가 없어야합니다.
수행 할 작업을 결정하는 데 프로그램이 약 60 초 이상 걸리지 않아야합니다. 이 규칙은 컴퓨팅 성능의 변화로 인해 엄격하게 적용되지는 않지만 합리적인 시간 내에 움직여야합니다.
프로그램의 소스 코드는 총 1MB (1,048,576 바이트)를 초과하지 않아야합니다.
귀하의 프로그램은 항상 합법적 인 조치를 취해야합니다. 당신의 프로그램은 이미 돌이 존재하는 곳으로 이동할 수 없으며, 자신의 돌 그룹이 잡히는 조각을 놓을 수 없습니다. (이 과제의 목적에 대한 규칙의 한 가지 예외는 프로그램이 원래 위치를 만들 수 있다는 것입니다. 보드의 현재 위치 만 제공되기 때문에 어떤 동작이 수행되었는지 저장할 수 없습니다. 전에.)
당신의 제출은 보드의 상태가 비어있는 시작 Go의 게임에서 다른 모든 제출에 대한 모든 플레이 -all 토너먼트에서 플레이하고, 각 프로그램은 보드의 위치를 먹이로 이동하고 이동합니다 .
각 제출 쌍은 두 번의 라운드를합니다. 각 플레이어는 검은 색입니다. 이 문제의 AI는 완전히 결정론 적이므로 동일한 AI 중 두 개가 함께 재생하면 항상 정확히 동일한 게임이 재생됩니다.
승리 조건은 다음과 같습니다.
당신의 프로그램이 게임이 끝날 때까지 진행한다면, 중국의 득점 규칙이 승자를 결정하는데 사용될 것입니다. 코미는 적용되지 않습니다.
프로그램이 이전 상태에 도달 한 시점까지 재생되어 무한 루프가 발생하면 두 프로그램이 묶인 것으로 선언됩니다.
귀하의 제출물은 다른 제출물에 대해 몇 점의 점수로 점수가 매겨집니다. 승점은 1 점, 동점은 반점입니다. 점수가 가장 높은 제출물이 전체 우승자입니다.
이것은 언제든지 도전 할 수있는 도전으로, 언제든지 새로운 출품작을 게시 할 수 있으며,이 경우 정기적으로 순위가 재평가됩니다.