「某種電湧似乎把它們燒壞了。我會試著盡快讓它們上線。」
本文翻譯自英文原文。
Github: GCaggianese/AoC-2025/D3
題目 第 3 天:Lobby
第一部分:
int jolt = 0;- 建立輸入的列表與副本:
og、aux1。 aux1會丟掉最後一個值。例如:987654321111118->98765432111111- 在這裡取最大值 ->
jolt += aux1.max*10 - 建立第二個列表
aux2,它是og從前一個最大值下一個位置開始的 slice。 例:98765432111111,max = 9 ->aux2=87654321111118 - 在這裡取最大值 ->
jolt += aux2.max
第二部分:
long jolt = 0;multiplier = 10^11(因為要建立 12 位數)- i 從 0 到 11(選 12 個數字):
- remaining~needed~ = 12 - i
- window = og[0 .. og.length - remaining~needed~ + 1](保留 足夠元素給之後的選擇)。例:第一次從
234234234234278選,要 12 位數,window =[2,3,4,2](必須留下 11 個給後面)。 - 從 window 選
maxVal->jolt += maxVal * multiplier - 從
maxIdx+1開始切掉og(丟掉直到且包含所選項目的所有元素)。 例:在 idx 2 選到 4 ->og變成[2,3,4,2,3,4,2,7,8] multiplier /= 10
- 摘要:選擇目前可用的最高數字,同時仍保留足夠數字完成 12 次選擇。