From 26654567a4abd6e19766e946f769c6061f350d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 9 Dec 2020 07:17:24 +0100 Subject: day 9 --- 20/py/d09.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 20/py/d09.py (limited to '20/py') diff --git a/20/py/d09.py b/20/py/d09.py new file mode 100644 index 0000000..4379039 --- /dev/null +++ b/20/py/d09.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +import sys +from collections import deque + + +def intify(_in): + return list(int(n.strip()) for n in _in) + + +def pt1(_in): + valid = [] + for i in range(25): + for j in range(i+1, 25): + valid.append(_in[i] + _in[j]) + for i in range(25, len(_in)): + if _in[i] not in valid: + return _in[i] + valid = valid[24:] + offset = 0 + for j in range(1, 25)[::-1]: + valid.insert(offset, _in[i - j] + _in[i]) + offset += j + + +def pt2(_in): + invalid = pt1(_in) + + i, s, nums = 0, 0, deque() + while s != invalid: + if s < invalid: + # add + s += _in[i] + nums.append(_in[i]) + i += 1 + else: + # pop + s -= nums[0] + nums.popleft() + return min(nums) + max(nums) + + +if __name__ == "__main__": + if len(sys.argv) > 1: + input = open(sys.argv[1], "r").readlines() + else: + input = open("../input/09", "r").readlines() + input = intify(input) + print(pt1(input)) + print(pt2(input)) -- cgit v1.2.1