aoc2020/day09.py
2020-12-10 15:28:17 +01:00

48 lines
1.3 KiB
Python

import aoclib
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)
max_buffer_size = 5 if test_mode else 25
number_buffer = []
for number in my_input:
current_buffer_size = len(number_buffer)
if current_buffer_size == max_buffer_size:
found_sum = False
for check_number in number_buffer:
if number - check_number in number_buffer:
found_sum = True
break
if not found_sum:
return number
number_buffer.append(number)
if current_buffer_size + 1 > max_buffer_size:
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)
start_index = 0
stop_index = 1
thisSum = sum(my_input[start_index:stop_index])
while thisSum != sum_to_find:
if thisSum > sum_to_find:
start_index += 1
else:
stop_index += 1
thisSum = sum(my_input[start_index:stop_index])
return min(my_input[start_index:stop_index]) + max(my_input[start_index:stop_index])