Advent of Codeをデータ分析ツールAlteryxでやってみるシリーズ、2024年2日目です。
※過去記事はこちら。AlteryxユーザーのためのAdvent of Codeの始め方、1日目。
Day 02「Red-Nosed Reports」
タイトルは「赤鼻の報告書」。
ストーリーとしては、いきなり核分裂工場とかぶっそうな話になってきました。
パズルのインプットは以下のとおりです。
7 6 4 2 1
1 2 7 8 9
9 7 6 2 1
1 3 2 4 5
8 6 4 4 1
1 3 6 7 9
1行ごとにレポートらしいのですが、各レポートが安全かどうかを判断するというのが今回のお題です。
Part1では、
- 各数字がすべて増加する、もしくはすべて減少する
- 隣接した数値は1以上、3以下である必要がある
とのことです。
Part2は、安全でない場合に1つだけレベル(数値)を削除できる、というものです。
・ネ
・
・タ
・
・バ
・
・レ
Part1,2を解いてみる
今回はとても2日目とは思えないくらい難易度があがっています。
Part1もPart2も基本的には各レコード間の判定をするだけです。ほぼ同じアルゴリズムが使えるでしょう。
最初に完成したワークフローは以下の通りでした。
基本的な意図をそのまま活かしつつ、無駄を省いたワークフローが以下のとおりです(初期のWFは意外と不要なツールとか入っていたりするんですよね)。33個(インプット、アウトプット除く)から25個まで減らせました。
基本的にPart2は、Part1に対して一個ずつレベル(数値)を抜いてすべてのパターンを作っただけです。そのために要したツールとしては、4つのみです(頭の方に付いてるフォーミュラはPart2用です)。頭から一つずつ削除したパターンを作るために、タイルツールでフィルタ用に各レコードにサブIDをつけておいて、行生成で行をレコード数分増やした後にフィルタかければ欲しいデータが得られます。あとは、それに対してPart1と同じアルゴリズムを走らせて判定するだけです。バッチマクロでも、カウント数分回してIterationNumberでフィルタかければ同じことが可能です。
そして、条件判定がごちゃっていたので、改めて整理してみました・・・。自分が今回混乱したのはこの条件判定部分ですね。たぶん焦りすぎていてごちゃった気がします。
結果18ツールまで短縮できました。
まとめ
- 1日目もそうでしたが、タイムトライアルに気を取られすぎていていい感じの結果が出ていない感じがします。もう少し落ち着け、って感じ。
- いずれにしても、最速で15分、20分、あとは40分~ってことで、結構難易度高い問題でした。
- 1日目もABS抜かしてたし、今日は各レベルは1から3以内の条件をすっ飛ばして相当時間を無駄にしました・・・。いそがば回れ。
- Private Leaderboardで、Part1は18位、Part2は6位でした。全体では9位まで落ちちゃいましたね・・・。
コメント