Day 3: Part 2
This commit is contained in:
44
main.py
44
main.py
@@ -1,28 +1,30 @@
|
||||
batteries = []
|
||||
|
||||
with open("day3/input.txt") as file:
|
||||
lines = file.readlines()
|
||||
for line in lines:
|
||||
line = line.strip("\n")
|
||||
data = []
|
||||
for joltage in line:
|
||||
data.append(int(joltage))
|
||||
batteries.append(data)
|
||||
for line in file:
|
||||
batteries.append([int(c) for c in line.strip()])
|
||||
|
||||
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:
|
||||
tenthPlace = max(bank)
|
||||
onethPlace = 0
|
||||
indexOfMax = bank.index(tenthPlace)
|
||||
if(indexOfMax == len(bank)-1):
|
||||
onethPlace = tenthPlace
|
||||
tenthPlace = max(bank[:-1])
|
||||
else:
|
||||
onethPlace = max(bank[indexOfMax+1::])
|
||||
|
||||
joltageBank = int(f"{tenthPlace}{onethPlace}")
|
||||
print(f"Bank {batteries.index(bank)+1} joltage is {joltageBank}")
|
||||
joltageSum+=joltageBank
|
||||
best_digits = max_12_digit_number(bank)
|
||||
joltage = int("".join(map(str, best_digits)))
|
||||
total += joltage
|
||||
|
||||
print(joltageSum)
|
||||
print(total)
|
||||
Reference in New Issue
Block a user