30 lines
664 B
Python
30 lines
664 B
Python
batteries = []
|
|
|
|
with open("day3/input.txt") as file:
|
|
for line in file:
|
|
batteries.append([int(c) for c in line.strip()])
|
|
|
|
|
|
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:
|
|
best_digits = max_12_digit_number(bank)
|
|
joltage = int("".join(map(str, best_digits)))
|
|
total += joltage
|
|
|
|
print(total) |