61 lines
1.4 KiB
Python
61 lines
1.4 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
|
|
limit = len(input) - i + 1
|
|
|
|
for j in range(curr_index, limit):
|
|
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()
|