お日誌 競プロむずー><
atcoder.jp ↑これを解いていた。
お気持ち
- 時間の最初からやっていたのに、A問題すら時間制限以内にクリアできなかったので悲しい
気付きとか
- 使わないnのwarningの消し方で_で置き換えるのを思い出すのが遅かった。
- 文字列で、移動だからこれ正規表現だなって発想までは良かった
/#{2}/
が現れたらダメはすぐに気づいた- 入れ替わりが発生する事例は
/\.{3}/
も無いと行けないと言うも途中で気づいた - 境界値、特にcuplicate_zone_checkの±1のところで躓いていた
- 結局、この±1の発想は終了後に他人の回答を読んで気付きを得た
- 愚直に再帰シュミレートしたら?というのはtimeoutさせられそうな気がしたからやめた
- (けどどうだったんすかね、試してみるのは有りだったかも)
- self.inputとして書いたせいか、exitしないと二度inputが呼ばれる現象があって悩まされた
- これが実行時エラーの原因 その一
- やっぱ、static関数に副作用を持たせるのは良くない
-
ruby agc034_a.rb < sample_01.txt
- 入力は文字列だぞ!!!!
- specで書いてる時に気分が完全に数値だったので忘れてた。
- 実行時エラーの原因そのニ
- pengwin で 微妙に悩んだ
- ブログ書いててgist-itを見つけたので便利
時間制限終了時点のコードへのリンク
Submission #5765996 - AtCoder Grand Contest 034
↑Specのテストで満足して、実際にtxt読ませるテストしてなかったら入出力で落ち続けてて、実行時エラーばっかりなのウケる……ウケる。
答え公開済みの延長戦後のコード↓
- ※更にリファクタするなら
- ※main, input, outputの辺りの副作用をどうにかしたい
- ※specコピペ多いのでletやshared_example, shared_contextとかその辺使える気はする
- ※コメントもdoc commentも足りないので増やす、lintで揃える
- ※あ、have_duplicated_zone_calcのnon_duplicated_zone_checkは区間区切る必要ないっすね、一つにまとめるとduplicated_zone_checkの呼び出しで両方呼び出さなきゃいけなくなりそうな、んー。