🎅
Advent of Code 2024 Day 7: Bridge Repair
このページは
2024 年の Advent of Code の Day7 の記事です。 Day6 はこちら。
Day 7: Bridge Repair
Day 7 では
3267: 81 40 27
のような入力が与えられ、 :
の右の数列の 足し算・かけ算から左の数字を作れるか? という問題です。
Part1
とりあえず全部試して見て条件に合うものがあるかを見れば良さそうです。
データを見る限り、負の値もないため、途中の計算結果が対象の値を超えてしまうなどした際に打ち切るようにすれば早く結果が得られそうです。
Part2
Part2 では、 +
と *
に加えて ||
という前後の数字を繋げて新しい数字を作る演算子が追加されます。
例えば 15 || 6 = 156
というように計算するといったものです。
優先度は他のものと同様に左から順に計算していくので良さそうです。
計算の優先度も同じであるため、新しい計算パターンも追加してチェックすれば良さそうですね。
l = len(str(nums[0]))
res |= search(nums[1:], (current * (10 ** l)) + nums[0], target, path + " || {}".format(nums[0]))
といったように、桁数をカウントした上で桁上げし、新しい数字を作るようにしました。
Day 8 に続きます。
Discussion