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位でした。まぁ、しょうがないですね、、、
コメント