そろそろICFPC2008について一言言っておくか

気づいたら寝落ちしてて submit できなかった!!!111
まあその時点で動く子がまっすぐ進んでぶつかりそうになったら避けるだけの子だったのでどうでもいいです。


大体ボクが何をしていたか書くと、始めはホームは引力、障害物は斥力をもつようにして、適当に動く方向を決めるとかしてたんですが、これが全く帰れない。一度ホームベースのちょっと左あたりでぐるぐるとかしててとても楽しい心持ちがした。しかし今思うとアレは戦略が悪いんじゃなくて、明らかにバグだ。
であまりにもクソだったので、普通にホームに向かって、障害物が着たら止まって避けて、またホームに向かって…というかなり慎重な子を書いた。とりあえずこれで始めのサンプルで帰れる子はできました。Endoさん…じゃなくて火星人対策は一切なかった。
その後さらに色々と考え直しました。想定されるマップのパターンとして、わけわからん迷路とかくると、さっきの愚直にゴールに向かう子ではどう考えても無理…
じゃあ経路探索的なアレをしてやるかーとなって、マップを 1m 単位で升目に区切って、よく知らないながらもA*?とか書いたんですが、100msとかで探索できるわけもなく、どうしようかなーとか思ってる間に気がついたら寝てました。起きたら昼の三時だった。12時間以上寝たてたことになる…


とりあえずA*がすごい遅いということはよく分かった。なんというか、自分の手で実装して試してっていう作業をしていないアルゴリズムとかは、計算量とか全然分かって無いので困りますね!その辺のなんというか地力がボクには全く足りていない気がする。
あと毎回思いますが規模大きくなった時にコーディングのスピード落ちすぎ。ゴルフばかりしているからですね!大体 Ruby だと300行とかその辺越えるくらいからうーん…って感じになる。多分あほ設計ではその辺から大変になるということなのだろう。
もうひとつ、これ書いてる時点で気がついたけれど Ruby だとボクの中ではオブジェクト思考とか超スルーされていて、ハッシュと配列ですべてを何とかしようとしてるらしいです。主にハッシュ。「$rover = {"x" => 0, "y" => 0, "d" => 0, "s" => 0}」みたいなことをしていて、とても愉快。
まあなんというか今回は問題文がちゃんと読めてたので、そこは良かったですね!


ということでまたばいにゃりにゃんにゃん勉強会に戻ります。