aoc2025/bob/day03/day03-p1.py

57 lines
1.2 KiB
Python

import re
class ExitFors(Exception):
pass
def get_battery(bank, max_jolt=9):
for max in range(max_jolt,0,-1):
for candidate in range(0, len(bank)):
if int(bank[candidate]) == max:
return candidate
def get_joltage(bank):
joltage = [" "] * len(bank)
# Get first battery
jolt_1 = get_battery(bank)
# Second battery is after the first, unless it was the last battery
if jolt_1 == len(bank) -1:
# Get battery from bank ...upto/before jolt_1
jolt_2 = get_battery(bank[:jolt_1])
else:
# Get battery from bank ...after jolt_1
jolt_2 = get_battery(bank[jolt_1+1:]) + jolt_1 + 1
joltage[jolt_1] = bank[jolt_1]
joltage[jolt_2] = bank[jolt_2]
joltage_str = "".join(joltage)
joltage_str = re.sub(" ", "", joltage_str)
return int(joltage_str)
def read_input(filename):
banks = []
for bank in open(filename).read().splitlines():
banks.append(bank)
return banks
# filename = "day03/example_input" # 357
filename = "day03/input" # 17092
banks = read_input(filename)
total_joltage = 0
for bank in banks:
total_joltage += get_joltage(bank)
print(f"Total joltage: {total_joltage}")