オセロプログラミングコンテスト2004

 私の研究室主催のオセロプログラミングコンテストがありました。
 このコンテストは皆がCPUを含めたオセロを作ってきて、相互に戦わすという趣旨のコンテスト。院生の私は審判役を務めることになりました。プレゼミ生の何人かは前日から研究室に泊り込み調整、何故かそれに付き合う形で私も泊り込み。
 
 既に24時間ほど起きている計算。_| ̄|○
 
 今年の参加者は22人。まあ大体例年通りといったところでしょうか。
 対戦方式としては、予選を6人が総当り方式で戦い、上位3名が準決勝へ進出。
 準決勝は各グループ3人で対戦し、上位1名が決勝進出。
 そして、決勝で上位4名が争い、順位付けするというもの。
 
 例年に比べて変わったことといえば、GUIのオセロが増えたというところでしょうか。GUIで作ってきた殆どの人はアプレットですが、中にはSwingやWindowsプログラミングなどで凝ったGUIを持ってきていた人も居ました。あとC#で作ってきていた人も居ましたね。.net Frameworksで動くプログラムを初めてみた気がします。(ぉ
 
 というか、コンテスト参加者の殆どがF研&サークルの人間なんですが……。(ぉ
 
 さて試合内容ですが、今年は中々大荒れでした。
 強いオセロの定番アルゴリズムとして、前半は多く取らずに相手の内側に入り込むように取っていき、相手の取ることのできる場所を減らし、最後に逆転で勝ち伏せるというパターンがあります。そして、今年もそういうアルゴリズムが予選でも良い成績を残しています。
 
 それらのプログラムの一部が、OTZ(F研&サークル所属)に前半で粉砕されているのです。つまるところ、前半多く取らずに少なく取っていった結果、全てOTZに取られるという事態に。
 ルール上、これは64石勝ちとして計算されるので、その次にOTZが負けたとしてもOTZの勝ち、ということになり、結果的に先読み再帰アルゴリズムなしのOTZが決勝戦まで出てきました。そして、決勝戦でもその餌食になるプログラムが……。
 強いプログラムを狙った蟻地獄のようなアルゴリズムで、決勝戦でも64石勝ちで二人を倒し、2勝1敗でOTZが2位に。

 私はこれを乙地獄と名づけることにしました。(ぉ
 
 また決勝では2回生が健闘し、決勝戦4人のうち2人が2回生という結果に。
 しかも、そのうちの一人はOTZに64石負けで粉砕されたものの、ダークに勝利し、もう一つの試合を勝利すれば優勝!……というところで、まさかのバグ落ち。結果1勝2敗に。
 
 結果的に2勝1敗で、OTZに勝利しているダークが辛くも優勝。
 
 総合結果は

  • 優勝 ダーク
  • 2位 OTZ
  • 3位 Pit
  • 4位 2回生のOTZ

 
 となりました。というか、1〜3位までうちのサークルの人間ですな。
 
 最後にOTZの試合をWZebraで解析してみました。
 f:id:Kirika:20041212123243:image
 OTZ視点から観測。初めは順当に相手が良い位置に置いていき、OTZの評価が下がっていっているのですが、最後にOTZが大逆転。
 
 トラップのようなプログラムだな……。