From 6226afb16d4d87226ae73babfce58864b4e3e308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 15 Dec 2020 07:15:51 +0100 Subject: working d15p1 --- 20/py/d15.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 20/py/d15.py (limited to '20') diff --git a/20/py/d15.py b/20/py/d15.py new file mode 100644 index 0000000..8723a28 --- /dev/null +++ b/20/py/d15.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +import aoc20 +import sys + + +def pt1(_in): + nums = [int(n) for n in _in[0].split(",")] + prev = {n: i for i, n in enumerate(nums)} + while len(nums) < 2020: + cur = nums[-1] + if cur not in prev: + nums.append(0) + prev[cur] = len(nums) - 2 + else: + nums.append(len(nums) - 1 - prev[cur]) + prev[cur] = len(nums) - 2 + return nums[2019] + + +def pt2(_in): + nums = [int(n) for n in _in[0].split(",")] + amount = 3 + cur = nums[-1] + prev = {n: i for i, n in enumerate(nums)} + while amount < 30000000: + if amount % 300000 == 0: + print(amount // 300000) + if cur not in prev: + new = 0 + prev[cur] = amount - 1 + else: + new = amount - 1 - prev[cur] + prev[cur] = amount - 1 + cur = new + amount += 1 + return cur + + +if __name__ == "__main__": + input = aoc20.read_input(sys.argv[1:], 15) + print(pt1(input)) + print(pt2(input)) -- cgit v1.2.1