先日考えた興味深い問題があります。それは、コードが持っているプロパティだけでなく、他のコードとゲームをプレイすることによって、他のコードと競合するコードを含んでいます。
あなたのタスクは、Goボードの現在の状態を取得し、実行または通過する動きを決定するプログラムを構築することです。
プログラムは、入力として次を受け入れます。
19行。各行に19文字があり、現在Goボード上にあるピースを表します。の文字は
0
、空の正方形を表し、1
黒で、2
白です。各プレイヤーが持っている囚人の駒の数を表す2つの数字(黒、次に白)。
移動する順番を表す1つの数字(黒または白)。上記のように、
1
黒であり、2
白です。
次のいずれかを出力します。
a b
移動する座標を表す座標のペア。1 1
は左上の正方形で、最初と2番目の数字はそれぞれ下と右への移動を表します。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秒以上かかることはありません。このルールは、計算能力のばらつきにより厳密には適用されませんが、妥当な時間内に移行する必要があります。
プログラムのソースコードは、合計1メガバイト(1,048,576バイト)を超えてはなりません。
あなたのプログラムは常に合法的な動きをしなければなりません。あなたのプログラムは、石がすでに存在する場所に移動することはできず、自分の石のグループが捕獲される結果となるようなピースを配置することはできません。(このチャレンジの目的のための規則の1つの例外は、プログラムが元々そこにあった位置を作成することを許可されていることです-それはボードの現在の位置だけが与えられるため、どの動きが行われたかを保存することは期待できません前。)
その後、ボードの状態が空になり、各プログラムが順番にボードの位置を与えられて移動するGoのゲームで、あなたの提出物は他のすべての提出物に対してオールプレイオールトーナメントでプレイされます。
提出の各ペアは2ラウンドをプレイします-各プレイヤーが黒である1ラウンド。この問題のAIは完全に決定論的であるため、2つの同じAIが一緒にプレイすると、常にまったく同じゲームがプレイされます。
勝利の条件は次のとおりです。
プログラムがゲームの最後までプレイされる場合、Goの中国のスコアリングルールを使用して勝者が決定されます。コミは適用されません。
プログラムが以前の状態に到達するまで再生され、無限ループが発生する場合、2つのプログラムは結合されていると宣言されます。
あなたの提出物は、他の提出物に対して何点獲得したかによって得点されます。勝利は1ポイントの価値があり、同点は0.5ポイントの価値があります。最も多くのポイントを持つ提出物が全体的な勝者です。
これはキングオブザヒルチャレンジです。誰でもいつでも新しいエントリを投稿でき、この状況が発生すると定期的に順位が再評価されます。