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

Advent of code

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

第六話 「Wait For It」

タイトルは「それを待つ」。ボタンを押す時間のことを言っているようです。

第5話でフェリーに乗り、新たなところに来たようですが、今度はボートレースをするようです。このレースは少し特殊で、決まった時間以内にどれだけ遠くまで行けるか、というルールです。また、既定距離があり、これを超える必要があります。ボタンは1秒押し続けるとその分速度が出ます。例えば1秒押すと速度は1ミリ。2秒押すと2ミリ、と押した秒数分だけ速度が線形にあがります(10秒押せば10ミリ)。ボタンは出発時しか押せないことに注意です。※どうやらボードはおもちゃサイズのようです。

入力としてはかなりシンプルです。

Time:      7  15   30
Distance:  9  40  200

これ、三回分のレースとなっていて、

7秒のレース:既定距離9ミリ

15秒のレース:既定距離40ミリ

30秒のレース:既定距離200ミリ

となっています。

ボタンを押す時間を1秒単位で変えれるとして、既定距離を超えるためにボタンを押す時間は何パターンあるか、というのを調べます。それぞれのレースのパターンを掛け算したものがPart1の答えです。

この最初のレースだと、既定距離は9ミリです。

0秒押す:速度0:移動秒数7:移動距離0:判定 NG

1秒押す:速度1:移動秒数6:移動距離6:判定 NG

2秒押す:速度2:移動秒数5:移動距離10:判定 OK

3秒押す:速度3:移動秒数4:移動距離12:判定 OK

4秒押す:速度4:移動秒数3:移動距離12:判定 OK

5秒押す:速度5:移動秒数2:移動距離10:判定 OK

6秒押す:速度6:移動秒数1:移動距離6:判定 NG

OKは4パターンです。同様に残りのレースも判定すると、8パターンと9パターンとなり、乗算すると288となります。

Part2は、インプットの空白を無視します。つまり1レースだけなのですが、時間は71530で距離は940200です。

・ネ

・タ

・バ

・レ

Part1,2を解いてみる

昨日の難易度に騙される必要はありませんでした。そのまま素直に解きましょう。

まずインプットを整えます。

ここからTimeを使って行生成します。つまりボタンを押す時間を行生成で作ります。

あとは、簡単な計算式で判定すれば完了です。

[Count]*([Time]-[Count])

Part2は、インプットの整形ロジックを少しだけ変更しましょう(むしろPart1より簡単になります)。その後の計算も同じで、今回1レースだけなので乗算せずに単なるカウントを取ったら完了です。

まとめ

  • むしろ1日目より簡単でした
  • まぁ、Part2でどんなどんでん返しが来るのかビビってたら拍子抜けパターン。
  • Part1は9分、Part2は3分、合計12分くらいでした。Private LeaderボードでPart1は最速でしたがPart2は2で総合2でした。惜しくもトップ取れず・・・。全体として、現時点ではトップのままです。

コメント

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