人間のプレイヤーに対して3 * 3ボードで三目並べの完璧なゲームをプレイする選択した言語でプログラムを作成します。ただし、すべての動きは、前の反復から生成された異なるプログラムでなければなりません。
人間の入力をどのように、どのような形で評価するかはあなた次第ですが、標準入力から読み取る必要があります。同様に、どのプレイヤーが開始するかを決定する方法を自由に選択できます(たとえば、最初に尋ねる、またはコンピューターが開始することを知らせる無効な動きを人間に入力させる、または他のアイデアを許可する)。
動きを検証する必要はありません。あなたはかなりプレイしている人間の対戦相手であると想定できます。
基本的に、ボードの状態に対応するプログラムがあります。状態は認識可能な方法で出力されますが、少なくとも次の詳細レベルが予想されます。
X..
00X
x..
人間のプレーヤーが彼の動きを入力した後、プログラムは同じ言語のソースファイル(標準出力またはファイル)としてそれ自体の次の反復を生成し、終了する必要があります。そのソースファイル以外の場所に情報を保存することはできません。(プログラムが生成されたプログラムをビルドして実行する必要はありません。ユーザーが実行できますが、禁止されていません)。生成されたプログラムがビルドおよび実行されると、同様に動作し、状態を表示し、ユーザー入力を待機します。
ゲームの終わりに、明確に特定できる方法で結果を印刷する必要があります(勝ったか同点か)。
完璧なプレーとは、プログラムが負けてはならないことを意味し、勝つことを強制する可能性がある場合、勝つべきです。
最短のコードが勝ち、最初の有効なエントリから少なくとも10日後に勝者が選択されます。
プログラムが次の反復の構築と起動を処理できる場合、スコアが10%減少します。(おそらく、それだけの価値はないことを知っています)もちろん、プログラム自体は、次の反復がユーザーからの動きを受け入れるまでに終了しなければなりません。
珍しい珍しいトリックを使用する場合は、コードに簡単な説明を投稿してください。