毎年12月に開催されている Advent of Code に、2019年から参加している。
過去記事:
- Advent of Code 2019 に挑戦している - すぎゃーんメモ
- Advent of Code 2020 完答した - すぎゃーんメモ
- Advent of Code 2022 を完走した - すぎゃーんメモ
2023年のAdvent of Codeにも挑戦していて、年が明けてしまったが先日ようやく25日すべての問題に解答して 50 個のスターを集めることができた。
2023年は例年と比較しても難易度が高いものが多かったように思う(英語のストーリーを読解しきれない、のは毎年のことだが)。 いちおう「他の人の解答を見たりせずにまずは自力で回答する」という目標は達成してとりあえずの自力完答はできたが、正直どうするのが正しかったのか分からん…というものも多かった。
これから Reddit での議論を見たり他の言語でも解いてみたりして、もうちょっと勉強しておこうと思っているところ。
問題の概要と解いた感想
ネタバレしない程度に。
day01
行の文字列の中から数値(数値)を見つける。
1日目の小手調べにしてはpart2がちょっと面倒だった
day02
3色の石の数を推測するゲーム。
正しく入力をparseして処理できれば特に問題ない
day03
2次元の図ではあるが横に並ぶ数字は数値として見る必要がある、というもの。
数値と記号の位置関係をうまく判定できれば、という感じ
day04
スクラッチカードの得点計算。
part2はAoCらしいメタな感じでちょっと頭を使う面白い問題
day05
数値の範囲から別の範囲へのマッピング、を繰り返す。
急に難易度が上がって大変だった…!
day06
チャージ時間を調整してボートが進める距離を予測する。
入力のフォーマットが不自然だったのは意味があったか…
day07
トランプのポーカーの役の強さでソートする。
またしてもpart2の展開を予測できなかった
day08
2分岐の迷路を指定された方向に無限に進み続ける。
part2がやはり少し難しく。入力が上手く作られていることに救われている感じ
day09
数列から差分を使って次の値を予測する。
スッと解けると気持ち良い
day10
2次元grid内でループする経路を検出。
part2はだいぶ苦労した… 理論を知っていればもっと簡単だったのだろうか
day11
膨張し続ける宇宙空間で銀河間の距離を求める。
これはpart2はこうなるだろうな、というのが予想できた
day12
イラストロジック的なもの。
そろそろ探索の実装も一筋縄ではいかなくなってくる
day13
2次元grid上で鏡写しになっている境界を見つける。
簡単な方法を自力では思いつけなくて悔しい
day14
2次元grid上で丸い石を一方向に動かして詰めていく。
今年は2次元gridモノが多いな…。
day15
HashとHashMapの独自実装。
工夫のしどころが見つからなかった…
day16
光の反射と分裂シミュレーション。
また2次元grid… しかしこういうのはvisualizationが面白そう
day17
動き方に制約のある最短経路探索。
制約ひとつで色んな考え方が生まれて面白いなぁ
day18
命令の通りに線を引いて囲んだ面積を求める、というもの。
AoCではよく出てくるタイプのもの、かな? すごい苦労したが…
day19
4つの値に対して分岐していくworkflowに流し込んで結果を得る。
どんどん実装が大変になってきた…!
day20
状態を保持する回路を使い、通るpulseのシミュレーション
しばらく悩んで色々ためして一応どうにか解を出せたが… という感じ
day21
2次元grid迷路内で、偶数歩で辿り着き得る範囲は。
これはめっちゃ難しくて悩みまくった… 何度も試行錯誤して解は出せたが
day22
3次元空間でジェンガを積んでいく。ブロックを取り除くとどうなる?
かなり考え込んでようやくどうにか解けた、、という感じ
day23
2次元gridでの一筆書き(同じ点を二度と通らない)最長経路。
計算は大変だったけどどうにか
day24
3次元空間内で移動する座標たち…!
おそらく2023で一番の難問だったと思う、しかし解けるとスッキリする。。
day25
グラフを3辺切断して2つのグループに分ける。
最小カット問題、というのか?アルゴリズム知らなくてちょっと泥臭いやり方で解いた