2011年06月20日

ICFPC2011

AIの挙動とかは後でチームの誰かが書いてくれるだろうし、覚えている限りでどういう戦い方をしたのか記録しておこうと思う。

+1:00 問題文解読終了。どういうパーツがあるのか考え始める。「これ絶対iroriさんとか強い」
+2:00 apply F xをどのように作るかで頭をひねる。「S(get (succ x))(get x)zero」この時主に見ていたのは http://www.angelfire.com/tx4/cus/combinator/birds.html combinator birds。
+3:00 f[0] <- x; apply0 Fというパーツが作られたことで最初のイディオム、apply0が生まれる。
+7:00 ICFPC恒例、若者の人間離れ。SKIllfulな人間になる。ま、まだ若者だもん。
+8:00 一足早く人間離れを起こしていたxhl氏の助力で、lazy evaluationができる。
+9:00 Zombie初テスト。もちろんテストプログラムの名前はSayaka。初submitでチーム名を間違え、そのまま使い続ける羽目に。
+10:00 Zombieの中でattackを発行することに成功し、初のexcellentゲット。このときはまだ20000ターン掛かっていた。
+13:00 自分と相手の255番にZombieを生成し合うプログラムを作成しテスト。内部コードネーム「円環の理」。
+15:00 Zombieの改良を続けて就寝。
+30:00 復帰。libgmpバージョン問題とかと戦う。lazyApplyがイディオムとして定着。
+32:00 細かいバグをつぶし、改良を重ねてSayaka改めKyoukoを安定させる。
+35:00 チーム内で割と効率よく殺し合いができるようになったので、部分式のキャッシュなどを実装する。SATSU☆GAIされたときにうまく動くように。
+37:00 円環の理に攻撃コードを埋め込むテストなどをする。詠唱に時間が掛かりすぎるので廃案。
+48:00 この辺はKyoukoの安定化をいろいろ。
+50:00 自己駆動型ループで新しい攻撃手段が作れないか模索するもSKKの間に挟まれて頓死。
+63:00 xhl氏が新しいAIのアイディアと実装を出してきたので、急いでYumaを組み立てて対戦させる。こっちの方向で追求しても良かったかもしれない。
+66:00 テストと洗練が間に合いそうにないので中止。仮眠。
+70:00 のんびりとスコアボードを眺めつつ、終了を待つ。

Haskellをメインで使ってみての感想:利点に関してはもう世界でいろいろ宣伝されているので、欠点について。バグがとても取りにくい言語だと思う。開発中、系が無限ループに陥るケースがいくつかあったのだが、これを見つけるのに1つあたり30分以上掛かった。主な原因は実行中プロセスに対してアタッチができず、スタックトレースも取れないこと、ちゃんとしたデバッガがまだまだないことあたりにあると思う。OSのエコシステムに期待できない言語なのだから、そのへんは自前サポートが必要。
あと、某offside-trap.elを入れておかなかったことを死ぬほど高階した。あれは必要なものだ。
posted by chun at 09:09| 関数型