なにしたか、と、その反省 - lightning

lightning 。とりあえず問題読む。よくわからんが VM 作る必要があることはわかった。こんくらい簡単だと JIT とかしたくなりそうだけどとりあえずインタプリタにしておくかーと適当に実装。うまく動かない。

動かない…動かない…動かない…とやってたらなんか IRC 情報によると state bit の使いかたを逆にしたら動くとか動かないとか。まぁなんか動いてるようには見えるが依然として score が -1 なんだけど…とか思いつつまぁ気にせずどうやって解くか考える。

何をどういう順番でやったか知らないけど、あれこれ考えてるうちに spec が修正されたと思う。その時には 1001 の解答らしきものを生成しそうな Ruby スクリプトができる感じにはなってたと思う。一生懸命物理を思い出してあれこれ考えてたんだけど、 Appendix に簡単に解ける方法が載っててアホか俺はと思った。あとビジュアライザは今回かなり速い段階で作ったと思う。

でまぁ寝たんだと思う。起きてさぁどうしたもんかいなと思いつつ 100x の他のを解いた。まずこのへんで問題だったんだけど、 osf 作ればそれでいいんだと思ってたから、データ調べて適当に解答作ってたのだった。

でまぁそのまま 200x はどうしたもんかなぁと考えたけど、要は軌道は円なんだから、 100x と同じ要領で、自機がいる点と地球に対して反対側の直線を考えて、予定到着時間に目標の物体が通るかどうかを考える感じでやった。まぁたいていちょっとずれてるので適当に手動で調整して、っていうアプローチだった。適当調整の部分は簡単なスクリプトとプログラムを併用した。

次 300x 。対象が楕円だから到着時間を推定できないんだよなぁということで悩む。あれこれ考えたところ、まぁこっちは従来通り Hohmann で行くけど、向こうへの到着予定時間はわからんので、対象の行動予定を全部洗って、その履歴内にあるようならまぁ調べてみるって感じでやった。外しまくるけどまぁ補正すれば色々大丈夫。

とそのあたりで他に12問解いてる子はいなかったので、大差で1位に立った。このへん: http://shinh.skr.jp/m/?date=20090627#p19

でまぁ、手動調整のコツはつかめたので、手動調整に頼りまくって高速に辿りつけるように調整していた。そして lightning 終了3時間前に手動調整は disqualify されると書いてあると気付く。うげーと思って手動調整プログラム/スクリプトを自動化した。自動化したところ点数は落ちたが 100x と 200x はなんとか通るようになった。 200x はたぶん追加される問題は解けない可能性が高いだろうが…で、その自動化した物体は 300x は 3003 が通せなかった。無念。そして lightning 終了。3時間でこの自動化ができたのは助かったと言えば助かったが、その間に何人かに抜かれて、5位くらいだったと思う。ただ翌日考えるに、この自動化もよく考えると最初っから相手の行動予定を知ってることを前提にやっちゃったのでダメか。

反省としてはルールをちゃんと読むことってことと、問題のバグとかの可能性がある点は放置して別のことをやるというような時間配分をすべき、とかか。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h