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

Advent of code

Advent of Codeをデータ分析ツールAlteryxでやってみるシリーズ、2024年5日目です。

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

Day 05「Print Queue」

タイトルは「印刷キュー」。

ストーリーは、プリンタの話です。印刷するのに安全マニュアルを更新しないといけないということのようです。パイプで区切られたところは、マニュアルのページの順序らしく、左側の数字が必ず右側の数字より左に来ないといけないということです。そして、下の方にあるカンマ区切りの数字が、一連のマニュアルです。

47|53
97|13
97|61
97|47
75|29
61|13
75|53
29|13
97|29
53|29
61|53
97|53
61|29
47|13
75|47
97|75
47|61
75|61
47|29
75|13
53|13

75,47,61,53,29
97,61,53,29,13
75,29,13
75,97,47,61,53
61,13,29
97,13,75,29,47

この下側にある数字の順番が、上のルールどおりになっているかどうかを調べる、というのが今回のポイントです。

Part1では、マニュアルが正しい順序になっているレコードの中間にある番号を抽出し、合計します。上の例では、以下の3行がルールに則っています。

75,47,61,53,29
97,61,53,29,13
75,29,13

そして、中心にある赤文字部分を合計すればオッケーです。

Part2は、順序がおかしいマニュアルを、ルール通り並べ替え、その時の真ん中の数字の合計を求めます。

・ネ

・タ

・バ

・レ

Part1,2を解いてみる

ルール部分は、不発のものもあるのでとりあえずすべてフィールド付加ツールで結合する必要があります。あとは、Substring関数などを使って位置を特定し、左側の数字の一致場所が右側の数字の一致場所より小さくなればオッケーということになります。

Part2は、ちょっと悩みました。Excelでテストデータを手動でやってみて、単にNGのものだけルール通りに直したところで、もともとOKだったものがNGになることがあったので、結局反復マクロですべてOKになるまで実行するようなものを作りました。ほんとにこれでいけるの?的なものが頭をよぎっていていつつも、これしかない、と思って作りました。

以下マクロの中身です。

まとめ

  • Part1はすんなりいきましたが、Part2はちょっと悩みました。単に一発やってオッケーならさくっと終わるんでしょうが、、、そろそろ反復マクロが必要かな、と思っていたのであまり違和感なく反復マクロルートに行った感じです。
  • でも、コミュニティの方ではマクロ使わないパターンの人も結構いて、どうやってるんだ!って感じなので、あとでキャッチアップが必要ですね・・・。
  • Private Leaderboardで、Part1は3位!Part2も5位で結構コンペティティブでした。Part2の途中の中抜けがなければ20分くらい短縮されたように思うのと、電源がなくてDesigner重いな、、、っていうハンデを背負いながらも5位は優秀かと思います。
  • おかげでトータル暫定3位に返り咲きです!

コメント

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