またまた今年も12月がやってきました。当然12月といえば、Advent of Code(AOC)の季節です。今年はAlteryxでAdvent of Codeをやり始めて5年目になります(最初の1年目とアカウントを変えてしまったので、記録は今年含めて4年分しか残っていません)。
昨年、一昨年は見事に★50個を達成しました。さてさて、、、今年は何個いけるでしょうか。
※AOCの説明はこちら。
2024年のAOCも、Maveryx Communityでかなりお祭りムードになってきました。今年もJoshuaがブログに書いてくれて盛り上げてくれています。今年もコミュニティのバッジさえもらえてしまいます、しかも達成度に応じたバッジになっています!バッジは1月中旬に付与されるらしいので、なんとか冬休みが終わる頃くらいまで全問とければオッケーです!
ということでさっそく1日目を見てみましょう。
Day 01「Historian Hysteria」
タイトルは「歴史家のヒステリー」。
今回はエルフの歴史家が主人公なのでしょうか・・・(人間かと思ったらやっぱりエルフでした・・・)。
サンプルインプットは以下のとおりです。
3 4
4 3
2 5
1 3
3 9
3 3
これを2つのデータストリームと見立てて処理をしていく問題です。Part1は、「数字をペアにして、それらの距離を測定します。左側のリストの最小の数字と右側のリストの最小の数字をペアにし、次に左側の 2 番目に小さい数字と右側の 2 番目に小さい数字をペアにします。それぞれのペアの中で、2 つの数字がどれだけ離れているかを計算します。その距離をすべて合計する必要があります。」です。Part2は、「左側のリストにある各数字を、右側のリストにその数字が現れる回数で乗算して合計し、合計類似度スコアを計算します。」。
・ネ
・
・タ
・
・バ
・
・レ
Part1,2を解いてみる
今回は簡単ですね・・・。
Part1は、小さい順に並べ替えた時に一番上から差分を取って最後は足す、というだけです。
Part2は、それぞれのデータストリームに分けて結合してカウントを取って掛け算するだけです(問題文のとおりにするのであれば)。
初期に作成したワークフローは以下のとおりです。
よくよく見ると、行分割とデータクレンジング、セレクトは正規表現ツール一発で解決できますね!改良型(ツールゴルフ)は以下のようになります。
Part1に限っては、結合ツールを使わないパターンも可能です。
ここでは2024.2で初登場のランクツールを使うことでいくつかのツールを短縮できました(ソート+複数行フォーミュラ)。
Part2も結合ツールの代わりにフィールド付加ツール使えばできると思いますが、意味はないのでやめましょう・・・
まとめ
- 今年は昨年に比べると非常に簡単でした!
- 7分程度でトップメンバーは解かれています。簡単だったからかひしめき合ってますね・・・。一瞬のミスが命取りみたいな感じになっています。
- なぜかGoogle翻訳が動かなかったのと、そのおかげでちゃんと問題文読まずに雰囲気で解いてたらミスってて、二回目のトライに30秒くらい待たされて時間ロスし、結果プライベートリーダーボードで4着。おしかったです!(Part1はABSがなかったのでミス。Part2は掛け算に気が付かずにミス)。急がば回れ、ですね・・・。
コメント