1
0
aoc-2020/9/part2.py

29 lines
792 B
Python

from itertools import combinations
preamble_size = 25
numbers = []
with open("input.txt") as f:
numbers = list(int(num) for num in f.read().splitlines())
def getInvalidNumber():
for i in range(preamble_size, len(numbers)):
possible = False
for numberPair in combinations(numbers[i-preamble_size:i], 2):
if sum(numberPair) == numbers[i]:
possible = True
break
if not possible:
return numbers[i]
invalidNumber = getInvalidNumber()
found = False
for setSize in range(2, len(numbers)):
for setStart in range(0, len(numbers)-setSize, 1):
contiguos_set = numbers[setStart:setStart+setSize]
if sum(contiguos_set) == invalidNumber:
print(min(contiguos_set) + max(contiguos_set))
found = True
break
if found: break