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