당신은 Go 게임을 위한 보드 포지션 과 플레이 할 움직임이 있습니다. 이동이 합법적인지 여부와 합법적 인 경우 새 보드 위치를 출력해야합니다.
Go 이동에 대한 간단한 설명 : 게임은 사각 보드의 빈 공간에 흑백 조각 ( "돌")을 번갈아 배치하는 것으로 구성됩니다. 서로 연결된 동일한 색상의 조각 세트 (4 방향)를 그룹이라고합니다. 그룹에 인접한 보드의 빈 곳 (4 방향)은 해당 그룹의 "자유"로 간주됩니다. 자유가 0 인 그룹이 캡처됩니다 (보드에서 제거됨). 자신의 그룹을 캡처하게하는 ( "자살") 이동은 하나 이상의 상대방 그룹을 캡처하지 않는 한 (불법 프로세스에서 자유를 얻으므로 실제로 캡처되지는 않음) 불법입니다.
관심있는 사람들을 위해 ko (및 superko)를 다룰 필요가 없습니다. 즉, ko 캡처가 합법적이라고 가정 할 수 있습니다. 그 의미를 모르는 경우 위의 규칙을 따르십시오.
입력 : 보드 크기를 나타내는 2와 19 사이의 숫자 n (포함), 보드 위치를 나타내는 0과 2 사이의 n 숫자의 n 라인 (공백), 공백으로 구분 된 3 개의 숫자가 뒤 따르는 이동을 나타냅니다. 보드 위치에서 0은 빈 장소를, 1은 검은 돌을, 2는 흰 돌을 의미합니다. 이 움직임은 돌의 기둥, 줄 및 색 (1 또는 2)을 나타냅니다. 열과 행은 0부터 시작하여 0부터 n-1 (포함)까지이며 보드 입력과 동일한 순서로 계산됩니다.
주어진 이사회 직책이 합법적이라고 가정 할 수 있습니다 (모든 그룹에 하나 이상의 자유가 있음).
출력 : 이동이 합법적인지 여부에 따라 1 또는 0 (또는 원하는 경우 true / false)을 포함하는 라인, 입력과 동일한 형식으로 새 보드 위치가 뒤 따릅니다 (법적 이동의 경우에만).
점수 : 전체 소스 코드의 바이트 수는 작을수록 좋습니다. ASCII가 아닌 문자 사용시 20 % 추가 페널티, 무료 소프트웨어를 사용하여 Linux에서 코드를 테스트 할 수없는 경우 20 % 추가 페널티
규칙 : 네트워크 연결 및 타사 라이브러리가 없습니다. 프로그램은 표준 입력 및 출력 스트림 또는 프로그래밍 언어와 동등한 표준을 사용해야합니다.
예 :
1) Input:
2
10
01
1 0 2
Output:
0
2) Input:
2
10
11
1 0 2
Output:
1
02
00
3) Input:
5
22122
22021
11211
02120
00120
2 1 1
Output:
1
00100
00101
11011
02120
00120
4) Input:
6
000000
011221
121121
122221
011110
000000
4 0 1
Output:
1
000010
011221
121121
122221
011110
000000