kt3k 日記

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ICFP Contest 2009 (3)

ICFP Contest 2009 3日目

問題2 は、与えられた2つの周回軌道に乗っている衛星のうち、片方を
動かしてランデブーさせなさいという問題。
(ランデブーの条件は1km圏内に900秒(以上)とどまる事)
問題1 と同様に、燃料制限があるので、あまり無茶な動かし方をすると燃料切れ
でクラッシュしてしまう。

自分が思いついた解答は、問題1のホーマントランスファを利用して、
相手の軌道に対してホーマントランスファしたときに、相手の軌道内で、
さらに同じ位置にぴったり合うようなタイミング(これは計算できる)まで、
待ってからホーマントランスファするというもの。

これを実装したら、2001, 2003, 2004 の3問が解けて、100位ぐらいになった。
(2002 は目標の衛星が遠過ぎたため、精度的にギリギリ解けなかった。)

その後、2002 を解くために相手とかなり近い位置に居るとき用の軌道補正プログラム
を書いて、2002 を安定して解けるようになった。

2002 を調べてる最中で、どうも、点数が自分で計算したものと
サーバーの出力が違うことに気づいて、vm の演算の丸め誤差で
なにか狂ってると考えて、その辺のコードをかなり長時間眺めた。

最終的に、トレースのタイミングが一秒ずれていた(一秒未来の噴射のデータを送っていた)
ことに気づいて、これで、10点アップ。(このデバッグをしたときが大会中一番嬉しかった。)
これが最後の更新になって、そのまま終了。暫定143位。

pepsiso

コメント


管理者にだけ表示を許可する
 

 

トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。