ICFP Contest

放置しっぱなしだった。

えーと、いまさら感満点なのはご愛嬌。

今回結局個人x6というよくわからないチームで参戦。
問題はいいと思うんだけど、なんだかなぁーという運営っぽかったのがなんとも。
# ま、2年前くらいがすごすぎたという話も。


初日。3:30am起床。4時に問題読み始めるが、アクセス過多でいきなりコンテストWebサーバー落ちまくる。
5:30だか6:00くらいに、サーバーをもうちょいでuploadするとかいうメールを見て萎え、二度寝
適当に起床して集合。昼前までネットワークの設定とかstraceとかobjdumpとかそんな感じ。
なんで、SO_REUSEADDRがないのかと。


昼飯食って、とりあえずゲームを作る。文字そのまま送るだけだけど、lとrが逆なので非常に操作しづらかった。
んで、とりあえず手でなんとなく感じがつかめたので、まっすぐゴールを目指す。
クレーター何それ?的な。nyaさんnuさんが書いてたproxyが大活躍。
とりあえず簡単なマップは最後までいけるように。一応submit(後にknoppix(だっけ?)でコンパイルできないことが発覚(ひどす
あと、hell.wrldがなんか偶然クリアできたりする。


2日目。とりあえずいろいろ考えるも、いい案が浮かばないのでMapEditorなんかを作る。
なんでActionEventはイベントのもとのcomponentを取れないんだとか、いまさらながらに思う。
持っておくのめんどいじゃないか。
b.wrld作成。
いろいろ迷うも、今回は自分の視界以外のことを忘れようと決心。(←負け決定。
いやー、なんか遅延とかあるっぽいし、10ms弱でメッセージ送れば次でstate変わってるはず!というよくわからない信念を抱く。
あと、localだけでうまくできたらかっこいいじゃん(←だめ発想。
それでも、さらに遅延があるっぽいことが発覚。なんか数フレーム遅れてね?
とりあえずいったん帰宅して、SMLのasmを眺める。これ読むのきつ。decompilerほしい。


3日目。
なんかサーバーがアップデートとからしい。
蚊の動きかたが変更され、ちゃんと追尾されるように。hell.wrldクリア不可能に。
ぐちゃぐちゃやるもあまりすすまず。
あと、壁抜け(岩抜け?)とかができると、発覚。
とりあえず方針として、目に見える範囲を360分割して、それっぽい方向に進む。というよくわからない戦略でコードを組む。
日付が変わったかその辺で気づいたbug。

inline double mod2Pi(double radian) {
  if (radian > M_PI) {
    do {
      radian -= 2 * M_PI;
    } while (radian >= M_PI);
  } else if (radian < -M_PI) {
    do {
      radian += 2 * M_PI;
    } while (radian < M_PI);
  }
  return radian;
}

むしろ、plus minusを間違った回数は片手じゃたりない。。。OTL
なんか、挙動が不振だとおもったら。。。あほだ。。。


と、まーそんなこんなで、時間が来たのでsubmit。あーあーあ。
そんな感じ。


んでまー、久々のコンテスト。できは、まー微妙。
今思えば、せめてクレータみつけたらとまれる、位のスピードで進めばよかったかも。
あと、環境がない。。。去年もそうだったけど、サポート環境にwinがないのはきつい。
# 去年はrope@cygwinが、だが。。。
やっぱりlinux必要かもなぁ。いい加減安いのなんか買うか。。。


ついでにコンテスト主催へのちとした不満。
コンテスト中のでかいbug fix多すぎじゃないのかと。。。
server最初にuploadされてなかったのは、そもそもできてなかったんじゃなかったのだろうか。。。
# とかいって、全部つりだったらそれはそれですごいが。。。
あと updateしたっていって、binary diffがなかったり、とか。
最初のSO_REUSEADDRとかもだけど。
はめた、ってよりは、なんか手ぬかり感が、なんとも。


楽しかったので、また来年も、ということで。