Advent of CodeをAlteryxでやってみる8日目

Advent of code

※過去記事はこちら。AlteryxユーザーのためのAdvent of Codeの始め方1日目2日目3日目4日目5日目6日目7日目

8日目です。年末ともなるとやはり飲み会の時期ということで、東京Alteryxユーザー会の幹事メンバーと忘年会してましたら、ブログが遅れてしまいました!

タイトルは、「Treetop Tree House」。木の頂上の木の家、でしょうか。

8日目にもなると大分高難度の問題になってきますね・・・。

入力データとしては、以下のようになっています。

30373
25512
65332
33549
35390

これは、森を示していて、この数字はそれぞれ生えている木の高さを示しています。外から見たときに見える木の本数をカウントする、というのがPart1の問題です(外周は常に見えているということでカウントされます)。

木の方から見たときに外まで見える条件は、自分がいるポジションの木より低いことです。

Part2は、各木の上から、各方向(東西南北)に見える木の本数をかけ合わせた結果、最も高いポイントを求めることです。例えば、北方向に2本、南に2本、東に3本、西に5本であれば、2x2x3x5という計算になります。

・ネ

・タ

・バ

・レ

解いてみる

今回も時間の都合上、ワークフローのみ掲載します(後で時間があるときに詳細記載します)。

マクロを使った初期バージョン

今回はマクロベースで行っています。こういう各ポイントを扱うパターンはロジック組むのが結構時間かかります。マクロで行う場合は結構素直にマクロを作れば解けるパターンが多いのですが、問題はデータ量です。今回はPart1を実行するのに3分23秒、Part2は5分11秒でした。マクロ使わずに作るともっと高速に実行が可能なはずです。

マクロ:Part1用

マクロ:Part2用

まとめ

  • 8日目は、Advent of Codeではしばしばあるタイプの問題です。マクロ使わずに解くこともできるのですが、なかなかロジックを組み立てるのが慣れないと大変です。
  • 最速の人でも52分。早く解けて1時間程度の問題でした。
  • 個人タイム:Part1 45分48秒、Part2 1時間25分44秒(Private Leaderboardで4位) 

解答ワークフローダウンロード

コメント

タイトルとURLをコピーしました