ICFP コンテスト 2008

去年と同じメンバで二回目の参加。結果もたぶん去年と同じようなもんだろうと思います。つまり全然だめぽ。迷路とか無理すぎます。

ようやっとICFPのツケで貯まった仕事が片づき一段落したので、これから参加者のみなさんのブログやコードなどを見て回りつつ、いろんな手法を楽しもうと思います。

以下、覚えている範囲で書き遺しておきます。


1日目。あんまり寝ないままスタート。言語は、チーム内でコードをシェアしやすそうだったのと計算力よりはアイディア勝負っぽかったのとg++がバグってたのでとりあえずRubyで書いてみることに。昼前にはまっすぐホームに向かうのはできたと思う。

その後、前方の視界に入った各物体の位置で適当に重みをつけて軽い方に行くのと、その中で一定以上に近づいた物体があればそれを全力で避けるような処理を追加。

あとホームの目の前にある物体を避けてホームを通りすぎてしまう対策で、自機とホームの間に物体があったりホームの方を向いてなかったりするとホーム近くで減速とか。サンプルマップは大体クリアできるようになった。このへんで一日目おわり。6時間ほど寝る。

2日目からアルゴリズマー二人が本格的に参戦。自機から物体への接線を引き、なるべく早い段階で外側へ避けはじめると減速が最低限で済むようになる。それと必要無いときに高速回転状態にならないようにする。

しばらくアドホックにパラメータいじるも、目の前の岩を避けてその隣のクレーターに突っ込むみたいな事故が多発。さすがに一番近い物体しか見えなくなる状態はヤバいということで、自機の状態と視界に入る物体全体から適当な重みをつける評価関数を作るのを頑張ることに。このへんのアルゴリズムはLayCurse氏におまかせ。

いろいろやってみたが、max speed とか max turn とかの初期パラメータをいじるとサンプルマップすら全然安定しない。

3日目は私は全然参加できなくて、他の二人に任せっぱなしだった。帰宅後はヘトヘトで時間が過ぎるのがやたら速く、隠しパラメータ推定とか経路探索とかやる時間も気力も残ってない感じで気づいたら寝てたりして、まじで役に立たなくてもうほんとごめんなさいというあたりでサブミットし終了。泥のように眠る。

翌日、バグを見つけるorz


そんな感じで今年のICFPコンテストが終わりました。後から思えば密接した物体のマージくらいは難しくないしやらなきゃいけなかった。
いつの日かリベンジ…できる日が来るといいなぁ。