25
最高の戦艦AIとは何ですか?
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 戦艦! 2003年(17歳のとき)に、戦艦AIコーディングコンテストに参加しました。そのトーナメントに負けたとしても、私はたくさんの楽しみを持ち、そこから多くを学びました。 さて、最高の戦艦AIを求めて、この競争を復活させたいと思います。 これが、現在Bitbucketでホストされているフレームワークです。 勝者には+450の評判が与えられます!コンテストは2009年11月17日から開催されます。17日0時以降のエントリーまたは編集は受け付けられません。(中央標準時)エントリーを早く提出して、チャンスを逃さないようにしてください! この目標を維持するには、コンテストの精神に従ってください。 ゲームのルール: ゲームは10x10グリッドでプレイされます。 各競技者は、5隻の船(長さ2、3、3、4、5)をそれぞれグリッドに配置します。 船を重ねることはできませんが、隣接する場合があります。 次に、選手は交代で相手にシングルショットを発射します。 ゲームのバリエーションでは、ボレーごとに複数のショットを撃つことができます。 ショットが沈んだ、ヒットした、またはミスした場合、対戦相手は競技者に通知します。 いずれかのプレイヤーのすべての船が沈没すると、ゲームプレイは終了します。 コンテストのルール: 競争の精神は、最高の戦艦アルゴリズムを見つけることです。 コンテストの精神に反するとみなされるものはすべて失格の理由となります。 対戦相手に干渉することは、競争の精神に反します。 マルチスレッドは、次の制限の下で使用できます。 自分の番でないときは、1つのスレッドしか実行できません。(ただし、任意の数のスレッドが「一時停止」状態になる可能性があります)。 「通常」以外の優先度でスレッドを実行することはできません。 上記の2つの制限がある場合、あなたのターン中、少なくとも3つの専用CPUコアが保証されます。 ゲームごとのCPU時間の1秒の制限は、プライマリスレッドの各競合他社に割り当てられます。 時間切れになると、現在のゲームが失われます。 未処理の例外があると、現在のゲームが失われます。 ネットワークアクセスとディスクアクセスは許可されていますが、時間制限がかなり禁止されている場合があります。ただし、時間の負担を軽減するために、いくつかのセットアップとティアダウンの方法が追加されています。 コードはスタックオーバーフローに回答として投稿するか、大きすぎる場合はリンクしてください。 エントリの最大合計サイズ(非圧縮)は1 MBです。 公式には、.Net 2.0 / 3.5が唯一のフレームワーク要件です。 エントリはIBattleshipOpponentインターフェイスを実装する必要があります。 得点: 101ゲーム中のベスト51ゲームがマッチの勝者です。 すべての競技者は、ラウンドロビン形式でお互いにマッチしてプレーします。 競争者の最高の半分は、勝者を決定するためにダブルエリミネーショントーナメントをプレーします。(実際には、半分以上の最小の2の累乗。) トーナメントにはTournamentApiフレームワークを使用します。 結果はこちらに掲載されます。 複数のエントリーを送信した場合、ベストスコアのエントリーのみがダブルエリムの対象となります。 幸運を!楽しんで! 編集1:関数にエラーを見つけたFreedに 感謝します。修正されました。フレームワークの更新バージョンをダウンロードしてください。Ship.IsValid 編集2: 統計をディスクなどに永続化することに大きな関心があったので、必要な機能を提供するいくつかの非時間設定および破棄イベントを追加しました。これは半破壊的な変更です。つまり、インターフェイスは関数を追加するように変更されていますが、それらに本体は必要ありません。フレームワークの更新バージョンをダウンロードしてください。 EDIT 3: バグ修正1:GameWonとGameLostだけ時間外の場合に呼ばなりました。 …