aoc2020/day09.py
2020-12-09 06:30:27 +01:00

45 lines
1.2 KiB
Python

import aoclib
import itertools
DAY = 9
TEST_SOLUTION_PART1 = 127
TEST_SOLUTION_PART2 = 62
def part1(test_mode=False):
my_input = aoclib.getInputAsArray(day=DAY, return_type=int, test=test_mode)
if test_mode:
preamble = 5
else:
preamble = 25
number_buffer = []
for number in my_input:
if len(number_buffer) == preamble:
found_sum = False
for combination in itertools.combinations(number_buffer, 2):
if sum(combination) == number:
found_sum = True
break
if not found_sum:
return number
number_buffer.append(number)
if len(number_buffer) > preamble:
number_buffer = number_buffer[1:]
return 0
def part2(test_mode=False):
my_input = aoclib.getInputAsArray(day=DAY, return_type=int, test=test_mode)
sum_to_find = part1(test_mode)
for start_index in range(0, len(my_input)):
for stop_index in range(start_index + 1, len(my_input) - start_index - 1):
if sum(my_input[start_index:stop_index]) == sum_to_find:
return min(my_input[start_index:stop_index]) + max(my_input[start_index:stop_index])
return 0