summaryrefslogtreecommitdiffstats
path: root/20
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-12-15 07:15:51 +0100
committerGustav Sörnäs <gustav@sornas.net>2020-12-15 07:15:51 +0100
commit6226afb16d4d87226ae73babfce58864b4e3e308 (patch)
tree2df12c8f7242f636c94ae115a1f5c2da9f534783 /20
parentac915bc9c59be8ebe031d32d479b1ead2f6b8177 (diff)
downloadaoc-6226afb16d4d87226ae73babfce58864b4e3e308.tar.gz
working d15p1
Diffstat (limited to '20')
-rw-r--r--20/py/d15.py42
1 files changed, 42 insertions, 0 deletions
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))