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

Advent of code

12月といえば、Advent of Code(AOC)の季節です。今年はAlteryxでAdvent of Codeをやり始めて4年目になります(最初の1年目とアカウントを変えてしまったので、記録は3年分しか残っていません)。

昨年は見事に★50個を達成しました。今年は何個いけるでしょうか。

※AOCの説明はこちら

2023年のAOCは、Maveryx Communityでもかなりお祭りムードになってきました。ブログにも大々的にとりあげられ、コミュニティのバッジさえもらえてしまいます!

ということでさっそく1日目を見てみましょう。

第一話 「Trebuchet?!」

タイトルは「平衡錘投石機」とのことですが、こんな英単語知りません・・・(中世で城攻めに使われる投石機のことらしいです)。

毎年ミニストーリーがついていますが、今回は世界的な降雪が問題になっていて、そのポイントをめぐって★を取る、ということらしいです。

今日の話は、投石機の調整用のパラメータを含むテキストデータをインプットとして入力し、そこからそのパラメータを取り出す、ということのようです。

インプットは以下の通り。

1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet

一番左にある数字と一番右にある数字を横にくっつけて(つまり、一番左にある数字を10の桁、一番右にある数字を1の桁)、その合計を取る、という問題です。

上の例では、上の行から、1と2、3と8、1と5、7となっているため、12、38、15,77となります(一つしか数字がない場合は、ゾロ目になるのです)。これを合計すると、142です。

Part2は、数字だけではなく、英単語で書かれた数字も数字として取り扱うということになり、「one」「two」「three」「four」「five」「six」「seven」「eight」「nine」の単語は数字として取り扱うことになります。

もちろん、このデータはサンプルなので、実際のデータは1,000行あります。

・ネ

・タ

・バ

・レ

Part1,2を解いてみる

一番左と一番右の数値だけもってくればいい(両方とも一桁です)、ということで様々な解法があります。

正直、自分のワークフローの出来はいまいちでした・・・。

考え方として、数字だけ正規表現ツールでトークン化で抜き出し、ソートして最初と最後のデータだけ抜き出す、という考え方です(これ、集計ツールの最初、最後でも良かったですね・・・)

Part2は、これは初日にしてはかなりのひっかけでしょうか・・・。基本的に、検索置換ツールでいけるのですが、英単語でくっついているケースがありまして、例えば「one」「eight」がくっついて「oneight」となっていると、検索置換ツールでは、最初の「one」の部分にのみ反応してしまい、右側にあるはずの「eight」が無視されてしまいます。ここに気づかないと永遠にさまよう羽目になります

ちなみに、この単語リストはテキスト入力ツールで作るのが良いでしょう。最終的には以下のような表を作ることになりました。

ということで、冷静な頭でワークフローを整理すると、以下のような感じですね・・・(めちゃくちゃ非効率なワークフローになっていました)。

まとめ

  • 1日目の割に難しくなかったですか?(というかPart2のひっかけがひどい)
  • Topの人は11分。私はPart1は7着でしたが、最後は2着。合計38分くらいかかりましたが、1日目にしてはみなさんやはり苦戦されていたようです。
  • 最初に作ったワークフローが冗長すぎました。まだ頭が寝ぼけているようです。
  • 一旦記念スクショ!
  • Designer Cloudでも解けました!

コメント

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