先日投稿したこちらのコードを見直しました。
見直した様子はこちら
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
この辺りは更に改善しなければ。徐々にできる事増やしてこ。