from aoc.input import get_input import copy import itertools import time import collections import re from aoc.partselector import part_one, part_two import functools def pw(line): return int(line.strip()) def p1(): inp = get_input(pw) for i in range(25, len(inp)): possible_values = set() for sample in itertools.combinations(inp[i-25:i], 2): possible_values.add(sum(sample)) if inp[i] not in possible_values: print (inp[i]) return inp return inp def p2(inp): l = 1398413738 i = 636 d = {} for j in range(2, 25): possible_values = set() for sample in range(1,636): possible_values.add(sum(inp[sample: sample+j])) d [sum(inp[sample: sample+j])] = inp[sample: sample+j] if l in possible_values: print(min(d[l]) + max(d[l])) return (min(d[l]) + max(d[l])) return 0 if part_one(): start = time.time() result1 = p1() print(round(1000*(time.time() - start), 2), 'ms') if part_two(): start = time.time() p2(result1) print(round(1000*(time.time() - start), 2), 'ms')