Advent of Codeをデータ分析ツールAlteryxでやってみるシリーズ、2025年4日目です。
※過去記事はこちら。AlteryxユーザーのためのAdvent of Codeの始め方、1日目、2日目、3日目。

Day 4「Printing Department」
タイトルは「印刷部門」。
エスカレータが無事にDay3で動いたので、下に降りると印刷部門にやってきたようです。
ここは印刷用の紙(巨大なロール)で迷路ができているようで、この紙のロール(@)を取り除くことで壁の向こうのカフェテリアにいけるとのことです。
この紙のロールを取り除くには、あるロールの周り8マス以内に3以下ある場合に取り除くことができるそうです。
..@@.@@@@.
@@@.@.@.@@
@@@@@.@.@@
@.@@@@..@.
@@.@@@@.@@
.@@@@@@@.@
.@.@.@.@@@
@.@@@.@@@@
.@@@@@@@@.
@.@.@@@.@.
上の図から取り除くと以下のようになります。
..xx.xx@x.
x@@.@.@.@@
@@@@@.x.@@
@.@@@@..@.
x@.@@@@.@x
.@@@@@@@.@
.@.@.@.@@@
x.@@@.@@@@
.@@@@@@@@.
x.x.@@@.x.
Part2では、これを取り除くことができなくなるまで繰り返す、というものです。
・ネ
・
・タ
・
・バ
・
・レ
Part1、2を解いてみる
Part1は非常に単純(といえば単純)な問題で、Part2は反復的に繰り返す問題です。
考え方としては、紙ロールがあるポイントの周囲のポイントを作成し、これを元のマップとX、Y座標で結合することで周囲の紙のロールを抽出できます。これを集計すればオッケーです。
しかしながら、これサンプルにないトリックがあります。やり方によっては全く気づかないと思うのですが、0カウントはカウントできない、という罠に気をつける必要があります。おそらく普通に集計ツールで集計すると0カウントを見逃してしまう、ということになります。このケースは、元のポイントリストに対して左結合する、というのが定石です。
ただ、今回はなにもないポイントに「.」があるので、クロスタブツールでカウントを取るのもオッケーです。
Part2はこれを反復マクロで繰り返すだけなので、反復マクロの練習と思ってやってみてください。


ちなみに、あるポイントに対して周囲のポイントを作るマクロを作っているので、それを活用しています。


まとめ
- なんだかんだで0ポイントでハマったのは私です。
- 今年はいまいち感が働かないです・・・。
- というか、過去にも似たような問題がありました

コメント