Goゲームのボードポジションとプレイの動きが与えられます。移動が合法であるかどうか、合法である場合は新しいボードの位置を出力する必要があります。
Goの動きの簡単な説明:ゲームは、正方形のボードの空いている場所に黒と白のピース(「ストーン」)を交互に配置することで構成されています。互いに接続されている同じ色の部分のセット(4方向)はグループと呼ばれます。グループに隣接する空の場所(4方向)は、そのグループの「自由」と見なされます。自由度が0のグループがキャプチャされます(ボードから削除されます)。1つ以上の敵のグループをキャプチャしない限り、自身のグループをキャプチャする(「自殺」)移動は、違法です(実際にキャプチャされないようにプロセスで自由を得ます)。
関係者にとっては、ko(およびsuperko)に対処する必要はありません。つまり、koキャプチャは合法であると想定できます。それが何を意味するのかわからない場合は、上記のルールに従うだけで問題ありません。
入力:ボードサイズを表す2から19までの数字n、それに続くボード位置を表す0から2までのn数字のn行、スペースで区切られた3つの数字、続く移動を表します。ボードの位置では、0は空の場所、1は黒い石、2は白い石を意味します。この移動により、配置する石の列、行、および色(1または2)が得られます。列と行は0から始まり、範囲は0〜n-1(両端を含む)で、ボード入力と同じ順序でカウントされます。
与えられた役員の地位は合法であると仮定できます(すべてのグループには少なくとも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