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

Day 7「Laboratories」
タイトルは「研究室」。
ゴミ圧縮機を出ると、過去のAoCでもでてきた研究室にたどり着きました(2024のDay6または2018のDay4です)。
どうやらテレポーテーションを研究しているそうですが、、、タキオンビームを発射しており、地図の下向きに発射されます。
.......S.......
...............
.......^.......
...............
......^.^......
...............
.....^.^.^.....
...............
....^.^...^....
...............
...^.^...^.^...
...............
..^...^.....^..
...............
.^.^.^.^.^...^.
...............
このとき、経路に「^」があると両脇にビームが別れます。Part1は、この別れた回数をカウントし、Part2はタキオンビームの経路の数を数えることです。
・ネ
・
・タ
・
・バ
・
・レ
Part1、2を解いてみる
典型的なAoCの地図問題+カウントを数える問題です。過去に似たようなのは何度もやった気がします。
MAP問題でいちいちデータを分割するのが面倒なのでマクロ化しています。

正直大したことはないのですが、問題文を考える作業に集中できます!
今回の問題は、上から下に流す形になります。通常のマップ問題だと上下左右ありますが、常にy方向に対して+1していくので考えやすい問題です。
基本的には次のポイントを探し(yを+1したポイントを作成し、MAPデータと結合)、値が「^」ならx-1とx+1したポイントにタキオンビームを作ります。そのタキオンビームを次の入力にするという反復マクロで解決できます。
Part1では、衝突判定したところを取りたいので、値が「^」かどうかの判定のところを出力にしてしまえばオッケー。Part2は、全ルートをトレースするようにするとレコード数が爆発するので(いわゆる組み合わせ爆発)、複数ルートをP1ではユニークを取りましたが、その時にそれまでのルートのカウントを合計してしまえばオッケーで、組み合わせのパターンから数におきかえることでレコード数を大きく削減することができます(これも過去に散々やられた問題なのでAoCやってる人は元々身についていると思います)。



まとめ
- 本日はすんなりいきました
- スタートでいつものスターターマクロがうまく動かず3分くらいロスりました・・・(昨日ちょっと変えたんですよね)
- Part1は衝突のところをカウントするのに、普通に下までのルートを出して満足していました。衝突のところを何も考えてなかったですが、うまくマクロ出力ツール1個追加しただけでいけたので運が良かったです
- Part2はおかげさまでPart1に対してカウントする項目をつけてユニーク化していたところを合計取っただけです。これもまぁ過去の積み重ねですね
- 過去の積み重ねがないと、結構苦労しそうな内容ってことかもしれません(過去結構このパターンハマったので・・・)
- おかげさまで今回はBase Aリーダーボードで初優勝できました!


コメント