Advent Of Code 2020を終えて

memo.sugyan.com

yosuke-furukawa.hatenablog.com

今年始めて参加した Advent of Code 2020年版を終えました

f:id:syohex:20201228212254p:plain

結果は上記のような感じ. 各問題 100位以内に解ければポイントがもらえるのですが, 100位なんて程遠すぎて結果は 0点. これは早くできたなと感じてもそんな問題はみんな早く解けているわけで自分が早く解けたときの方がむしろ順位は低かった印象. ポイントを取るにはまだまだ実力不足であることを感じました

Advent of Codeの特徴

  • コードの提出はない, 答えだけ提出
    • どんなに非効率なアルゴリズムでも答えが出ればいい. 微妙な問題サイズの場合はしばらく待てば解けてしまうこともあった
    • 超早いマシンを持っていれば幾分有利かも
  • 問題の入力が人によって違う
  • 世界中の人が多く解いているので解説が多数ある

感想

  • 初期の方は 1時間もかからず解けていたのであまり手応えがないって思っていたけど, 中盤からどんどん難しくなり休みをほとんど潰した日もあった
  • 問題が(無駄に)ストーリーがあり読んで理解するのに時間がかかる
    • 英語力が低いのが原因
    • 最速の人の解答時間に私の問題理解速度が追いついていないレベル. 10分ぐらい読んでやっとわかってことが多々あった
  • 入力のパースが面倒くさい
    • 去年はそんなことなかったらしいけど..
    • 構造と呼べるものも微妙だし, 問題によっては末尾に改行があったりなかったりと面倒くさかった
    • C++でずっと解いていたけど, 面倒くさくて Pythonで一問やってしまった. しかしC++で突き通そうということで全部 C++でやりましたが, 面倒くさかった
  • 例があるのは助かる
    • 例を見て問題をちゃんと理解できたということが多々あった
    • テストケースとして使える
    • しかし例があることで逆によくわからなくなることもあった(day 17の三次元, 四次元ライフゲーム)

問題の振り返り

全く解答が思いつかなかったという問題はありませんでしたが, 現実時間で解答を求められない問題がいくつかありそれらは解説を見た上で解答を作成しました. わからなかったのは以下の問題.

  • day 10 part2
    • 電源アダプタの並べ方が何通りあるかという問題. 愚直に求める方法しか思いつかず.
  • day 23 part2
    • ボール並び替えゲームを 1000万回やった後の並び方を求める問題. 愚直に求める方法しか思いつかず
    • 問題的に時間がかかることは予見できていたのだけど, 見当はずれの効率化を探していていつまで経っても効率的な方法が思い浮かばなかった

私の解答がいまいちだった問題として * day 15 part02 * 非効率的な実装だったけど, 3分ぐらい動かしていたら答えが出たのでそれで提出. 考え直したい

このあたりは単純に力不足だなと感じた. 来年はできれば解説を一つも見ずに完走したい. あとやっぱり自分で考えに考えて解くってのはやっぱり快感が伴うのでそういう意味でも自分で解けたらと思いました

最後に

楽しい経験ができたのと, まだまだ自分が力不足だということが認識できました. 来年も参加して 1ポイントでも取れるように実力をつけていければと思います