トップ «前の日記(2009-09-13) 最新 次の日記(2009-09-15)» 月表示 編集

日々の流転


2009-09-14 [長年日記]

λ. Google Code Jam 2009: Round 1C

Round 1B に続いて、またプラクティスを解いてみた。 今回は初めて時間内に全問解けた*1。やったー!

(追記: やったー!と思ったが、ルールをちゃんと見たら、Largeは入力データをダウンロードしてから8分間だけしかsubmit出来ないのね。なら、CのLargeはアウトだったなぁ。残念。)

A. All Your Base

基本的には現れた文字の数をベースにして、最上位の文字に1、残りの文字は上位の桁に表れる数字から小さいに順に数字を割り当てていくだけ。 で、楽勝と思ったら、unitaryでないという注意を見落としててIncorrect食らった(A-small-practice.in だと Case #12 と Case #32 がこの影響を受ける)。 これ絶対狙ってる引っ掛けだよなぁ。

B. Center of Mass

複数の蛍のデータが与えられているけど、実際にはその平均の座標と速度だけ考えればいい。 あとは、中学数学で二次関数の最小値を求めるだけ。 なんだけど、最小になる時刻を求めるときに式の両辺を割っていたのを忘れてて距離の最小値の計算結果が合わず悩んだり、速度が0のときを忘れててIncorrect食らったりした。

C. Bribe the Prisoners

最初、空でないセルの区間をキーにしてメモ化して書いた。 そしたら、C-small-practice.inはすぐに解けたけど、C-large-practice.inがとても終わらなかった。 そこで、「区間ではなくパターンをキーにメモ化するようにしたら、違う区間で同じパターンが現れたときも計算を共有できて速くなるかな」とか思って適当に書き換えてみたら割とすぐ終わるようになった。

  • 最初に書いたやつ C.hs
  • 書き換えたやつ C2.hs
Tags: haskell

*1 1A, 1B, 1C では今回の1Cが一番簡単だったと思う。

λ. tDiaryがIconv.convの呼び出しなどで落ちる

サーバーのRubyのバージョンがあがったら、tDiaryがIconv.convの呼び出しなどで落ちる。 こりゃ環境がおかしいのかと思ったら、Rubyのバグとのこと。 amazon.rb を使用して日記を更新するとRubyがSEGVる の現象と同じ。 最新版ということで ruby-1.8.7-p174 で試しても落ちたので、安定版スナップショットをいれたら、直った。

amazon.rbがSEGVする件 - 忘れたときに備えた記録(2009-05-06) の「あなたのRubyがamazon.rbでSEGVするか調べるワンライナー」が参考になった。

Tags: tDiary