advent_of_code/25/3/main.py
2025-12-05 17:06:59 -06:00

60 lines
1.3 KiB
Python

# from itertools import combinations
def get_highest(input: str) -> int:
highest = 0
for index, num in enumerate(input):
for subindex, subnum in enumerate(input):
if subindex > index:
highest = max(highest, int(num + subnum))
return highest
def get_highest_dynamic(bank_size: int, input: str) -> int:
# highest = 0
# Brute and "works", but is too expensive
# combos = combinations(input, 12)
# for c in combos:
# highest = max(highest, int(''.join(c)))
highest = ''
curr_index = 0
for i in range(bank_size, 0, -1):
curr_highest = 0
highest_index = 0
for j in range(curr_index, len(input) - i + 1):
found = int(input[j])
if found > curr_highest:
curr_highest = found
highest_index = j
highest += str(curr_highest)
curr_index = highest_index + 1
return int(highest)
def main():
'''Entrypoint'''
with open('input.txt', encoding='utf-8') as fh:
sum = 0
sum2 = 0
for line in fh:
# sum += get_highest(line) # Old style
sum += get_highest_dynamic(2, line.strip())
sum2 += get_highest_dynamic(12, line.strip())
print(f'Part 1: {sum}')
print(f'Part 2: {sum2}')
if __name__ == "__main__":
main()