Day 3: Part 2
This commit is contained in:
44
main.py
44
main.py
@@ -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)
|
|
||||||
Reference in New Issue
Block a user