ICFP Programming Contest 2014

http://icfpcontest.org/

うーん今年はあまりうまくいきませんでした。

今年の題材はパックマンで、プレイヤー側の AI を SECD マシン風のコードで、敵側を普通の 8 ビット CPU 風のコードで書けというもの。

金曜の夜は問題文(やたら長い)を読んでコードは書かず就寝。いつものパターンなら朝になると仕様のバグが取れてやりやすくなっているはず。

土曜はとりあえず順当に Lisp 風言語から AI CPU へのコンパイラを書く。SICP を引っ張り出してきて末尾再帰のやりかたを復習したり。それなりに動くコンパイラができたのが午後 3 時くらいで、そこから 6 時間で lightning division 用の AI を書く。方針としては、

  • マップの各マスを通った回数を覚えておいて、一番少ない方向に進む
  • 自分から直線上に敵がいたらそちらへは進まない

という感じ。Lightning division が終わって追加のタスク(敵側の AI を書く)が発表されたので、方針を考えつつ寝る。

日曜は敵側 CPU 用のアセンブラと AI を書く。適当にプレイヤーを追いかけるようにしたら前日に書いた AI が思ったより弱いことがわかってしょんぼり。プレイヤー側の AI にちびちび修正を入れるがあまりうまくいかない。AI の作り方とかよくわからんのよね……。このあたりから集中力が切れてきて、だらだらし始める。

月曜起きるとスコアボードができていた。自分の AI を送ってみるも全然ダメでしょんぼり。外はいい天気だなあ、有給だし遊びに行こうかなあ。

そんな感じでしょんぼりなまま終了。提出物はこちらになります。

今回は手も足も出なかった(というほどでもないけど)ので、上位チームはどんな AI を書いてたのか気になります。やっぱり真面目にゲーム状態を計算してたりするんでしょうか。自分は tick の計算とか面倒で逃げちゃったんですが。