Day 3: Part 2

This commit is contained in:
2025-12-03 18:07:58 +01:00
parent 4d1c9c10ed
commit 71217a3d4c

44
main.py
View File

@@ -1,28 +1,30 @@
batteries = [] batteries = []
with open("day3/input.txt") as file: with open("day3/input.txt") as file:
lines = file.readlines() for line in file:
for line in lines: batteries.append([int(c) for c in line.strip()])
line = line.strip("\n")
data = []
for joltage in line:
data.append(int(joltage))
batteries.append(data)
joltageSum = 0
def max_12_digit_number(digits):
target_len = 12
to_remove = len(digits) - target_len
stack = []
for d in digits:
while stack and to_remove > 0 and stack[-1] < d:
stack.pop()
to_remove -= 1
stack.append(d)
# Falls noch nicht genug entfernt wurde (am Ende nur große Zahlen)
return stack[:target_len]
total = 0
for bank in batteries: for bank in batteries:
tenthPlace = max(bank) best_digits = max_12_digit_number(bank)
onethPlace = 0 joltage = int("".join(map(str, best_digits)))
indexOfMax = bank.index(tenthPlace) total += joltage
if(indexOfMax == len(bank)-1):
onethPlace = tenthPlace
tenthPlace = max(bank[:-1])
else:
onethPlace = max(bank[indexOfMax+1::])
joltageBank = int(f"{tenthPlace}{onethPlace}") print(total)
print(f"Bank {batteries.index(bank)+1} joltage is {joltageBank}")
joltageSum+=joltageBank
print(joltageSum)