50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
#!/bin/env python3
|
|
def turn_on_batteries(series: str, amount: int) -> list:
|
|
batteries = list(series.strip())
|
|
batteries.sort(reverse=True)
|
|
highest = batteries[0]
|
|
|
|
if series.strip().__len__() == series.strip().index(highest) + 1:
|
|
highest = batteries[1]
|
|
|
|
highest_at = series.strip().index(highest)
|
|
for battery in batteries:
|
|
occurances = [
|
|
i for i, x in enumerate(series.strip()) if x == battery and i > highest_at
|
|
]
|
|
# print(battery, occurances)
|
|
if occurances.__len__() == 0:
|
|
continue
|
|
second_highest = battery
|
|
break
|
|
return [highest, second_highest]
|
|
|
|
|
|
def turn_on_batteries2(series: str, amount: int) -> list:
|
|
|
|
length = series.strip().__len__()
|
|
|
|
remaining = length - amount
|
|
new_stack: list = []
|
|
|
|
for battery in series.strip():
|
|
while remaining > 0 and new_stack and new_stack[-1] < battery:
|
|
new_stack.pop()
|
|
remaining -= 1
|
|
new_stack.append(battery)
|
|
|
|
if remaining > 0:
|
|
new_stack = new_stack[:-remaining]
|
|
|
|
return new_stack
|
|
|
|
|
|
with open("input", "+r") as file:
|
|
result = 0
|
|
for line in file.readlines():
|
|
batteries = turn_on_batteries2(line, 12)
|
|
print("result:", line.strip(), "".join(batteries))
|
|
result = result + int("".join(batteries))
|
|
|
|
print("result:", result)
|