ちくわ

ちくわにきゅうりを入れるとうまい

AtCoder ABC #035 の B「ドローン」を見直した

先日投稿したこちらのコードを見直しました。

blog.ginbear.com

見直した様子はこちら

035/b をリファクタ · ginbear/atcoder@57a23cc · GitHub

ポイントは

  • 1 行目 .chomp.split("") は完全に無駄だった
  • 18 行目 無駄な if 分岐を削除
  • 27 行目 class 内で puts するとテストしにくいので、method は値を返すだけにして、呼び出し元で puts するようにした

これによって

Exec time 167ms -> 21ms
Memory usage 6908KB -> 1916KB

となった。だいぶ違うんですね。まだ他にも改良ポイントはあるけど、一旦ここまで。
加えて、テスト(Rspec)を実装してみたが、だいぶ苦労した。というかうまく実装できていない。

テストを追加 · ginbear/atcoder@4a7b7c2 · GitHub

spec/spec_helper.rb にてテスト対象の ruby ファイルを require をするが、require 先の ruby が実行されて、標準入力待ちで実行が止まる...
うまい具合に class だけ呼び出すことって出来ないのかなぁ。

なので、ruby スクリプト側で、こんな感じで if 文で避けたらテストは実行できたけど、このままでは AtCoder に提出できない状態にw
( 試したけど Runtime Error になった

でも、と、とりあえずテストは出来たぞ!

% be rake spec
-- snip --

atcoder35_B_Drone
  ex1
  ex2
  ex3
  ex4

Finished in 0.00245 seconds (files took 0.17181 seconds to load)
4 examples, 0 failures

この辺りは更に改善しなければ。徐々にできる事増やしてこ。