忍んでいる肉球の足跡

プログラムに関連することを雑多に扱います

お日誌 競プロむずー><

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 で 微妙に悩んだ
    • debugger使えない
    • gem install ruby-debug-ide -v '0.7.0'をIDEAでやらせたらパーミッションエラー
    • consoleから直接叩いてもmkmf.rb can't find header filesのエラーでinstallできない
      • mkmfうんちゃらはmacでも見た覚えはあったような気がするし解決したログもありそうだったけど、windowsだしと思って後回しにした。
    • 環境依存のrubyがダメならrbenvでと試した
      • rbenv install(←installだけ無い)ので、なんすかね(pengwinの最適化の辺りの話だったり?)
        • あとversion 1.0.0だったような
    • 今度、dockerとの接続は考えたほうがいいかもしれない。
    • byebugを使えって言われそう
      • (普段からIDE使ってるのでコンソール系のデバッガはほぼ触ったことがない)
      • gdbをちょっと触ったくらいなので制限時間内ではむりぽ)
  • ブログ書いてて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の呼び出しで両方呼び出さなきゃいけなくなりそうな、んー。