Advent of Code 2025
入力データをダウンロードして内容を目視するのも問題の一部である。コードを書く前に確認したほうがいい。
adventofcode.com
毎年12月にプログラミングの問題が出題される。今年は12日間で、毎日Part1 と Part2の2問。合計24問。
Uiua 0.17.2 ですべて解いた。
コード
傾向
問題文からは入力データのサイズが不明なのでデータをダウンロードしてから推定する必要がある。それはいいのだが、入力データの特徴を見破って効率的なアルゴリズムを書く必要があることに気が付かなければならない。問題文が示す内容を解くための一般的な解法ではなく、データに特化したコードを書く。
特に Day9 は多角形の2頂点を選んで長方形を探す問題であるが、辺が接近しないデータになっているので効率的に解くことができる。気が付かなかったので時間がかかるコードになってしまった。
さらにDay12 は以下の6種類のピースの個数が指定されて長方形領域に入りきるかどうか判定する問題だが、自明な枝刈りとして
- 3x3のピースが入りきるならば、明らかにピースが入る
- ピースのマスの個数が長方形領域より大きいならば、明らかに入らない
これらが考えられる。その中間の、どちらでもない場合がとても難しいが、そのようなデータは入力データに含まれていないので高速に解くことができる。
