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

Advent of code

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

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

Day 04「Ceres Search」

タイトルは「セレス検索」。セレスって何?

ストーリーとしては単なる単語探しです。

サンプルのインプットとして、

MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX

というものがあり、この中から「XMAS」を探す、というものです。ただ、、、逆転しても良いですし、縦に並んでも良い、というのがポイントです。上の例では、以下のようになります。

....XXMAS.
.SAMXMS...
...S..A...
..A.A.MS.X
XMASAMX.MM
X.....XA.A
S.S.S.S.SS
.A.A.A.A.A
..M.M.M.MM
.X.X.XMASX

Part2は、探すものが異なっており、XになっているMASを探せ!ということです。例えば、

M.S
.A.
M.S

といったパターンを探す必要があります。MAS部分は、正順、逆順にできるとのこと。

・ネ

・タ

・バ

・レ

Part1,2を解いてみる

Part1は横方向は非常に簡単です。縦方向も横方向に持ってしまえば同じロジックが利用可能です。ただ、斜めを考える必要があります。これが曲者ですね・・・。

斜めについては、すべての点に対して、それらを始点として正解パターンを作成し、一致すれば(一致するカウントが5文字分)OKとする、というアルゴリズムにしました。これを考えつくのに若干時間がかかった感じです。

Part2についても斜めと同じアルゴリズムを用いました。それぞれの開始点を中心点のAと見立て、周りに4個のポイントを作り、MASのパターンを作り、5文字が一致すればOKとしました。結局、MASのパターンは、

M.S
.A.
M.S
S.M
.A.
S.M
M.M
.A.
S.S
S.S
.A.
M.M

の4パターンです。最初2パターンだけでやって、あれ?ってなってしまいました。

ワークフローはかなり乱雑な感じになってしまっています。余裕があれば整理してみたいところです。

まとめ

  • んー、ちょっと難易度高めに感じました。落ち着いた環境でできなかった、というのも一因ではあると思いますが・・・。いずれにしても斜めの処理をどうしようか迷ったのが敗因です。今年は全パターン作る系の問題が多いのかしら・・・。
  • これトップランナーは30分で解いてるんですよね・・・。そこまでMAP問題不得意ではないと思ってるのですが・・・。
  • Private Leaderboardで、Part1は5位!だったのでそこそこでしたが、Part2は途中20分~30分くらい中抜けしたので、結果は18位でした。まぁ、しょうがないですね、、、

コメント

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