純ブログ

ちょっとプログラミングしてる人のブログです。

電算部 2014春合宿

3 月 4 日から 2 泊 3 日の日程で合宿がありました. その合宿で, プログラミング班の自分がしたことをまとめます.

1 日目

部室にあるデスクトップパソコンなどの機材を合宿室へ移動させて環境を整えたあと, 事前に作ってきた AI でリバーシボードゲームの大会(6 人参加, 総当り)をしました. リバーシボードゲームのルールは, 通常のリバーシと次の 2 点が異なります.

  • 盤の大きさは 8×8, 9×9, ..., 15×15 のいずれか.
  • 使うとまだ石が置かれていない任意のマスに石が置ける“フリーコイン”がある.

自分は, 盤面にある自分の石の数をそのまま評価値に用いて, ネガアルファ法で探索しました. ただ, 常にフリーコインを考慮すると計算量が大きくなってしまうため, 通常のリバーシでパスする場面のみフリーコインを用いるようにしました. 合宿 3 日前から(1 日ぐらい自分なりに)本気出して作ったこの AI で大会に臨んだところ, 3勝2敗でした.

大会後はハッカソンをやる予定だったのですが, インターネットが接続できなかった*1ため, AI の修正や強化をすることになりました. 自分は, 図書館にあった『リバーシアルゴリズム』という本のソースコードを写経しつつ, 9×9~15×15 の盤面やフリーコインの実装をしました.

2 日目

一日中, 1 日目に続いて AI の実装をしました.

3 日目

片付けや合宿室の掃除などのあと, もう一度リバーシボードゲームの大会(8 人参加, トーナメント)をしました. 初戦は 10×10, フリーコイン 10 枚; 準決勝は 11×11, フリーコイン 10 枚; 決勝は 8×8, フリーコイン 5 枚(制限時間はいずれも 30 秒)でした. 自分は, 初戦を 57 対 43 で勝ち, 準決勝で 56 対 65 で負けました.

まとめ

リバーシしかやらなかった.

*1:普通は部室から合宿室へ LAN を通して, インターネットに接続する.