Browse Source

Complete day 15

Frans Bergman 4 years ago
parent
commit
86ef0aae73
2 changed files with 35 additions and 0 deletions
  1. 4 0
      15.input
  2. 31 0
      15.py

+ 4 - 0
15.input

@@ -0,0 +1,4 @@
+0,14,6,20,1,4
+0,3,6
+3,1,2
+1,3,2

+ 31 - 0
15.py

@@ -0,0 +1,31 @@
+lines = []
+
+with open("15.input") as f:
+    for line in f.readlines():
+        lines.append(line.strip())
+
+numbers = [int(num) for num in lines[0].split(",")]
+
+def find_nth(numbers, end):
+    numbers = list(numbers)
+    last_spoken = {}
+
+    for (i, num) in enumerate(numbers[:-1]):
+        last_spoken[num] = i
+
+    last = numbers[-1]
+    numbers = numbers[0:-1]
+
+    for i in range(len(numbers), end):
+        if last in last_spoken:
+            next = i - last_spoken[last]
+        else:
+            next = 0
+        numbers.append(last)
+        last_spoken[last] = i
+        last = next
+
+    return numbers[-1]
+
+print("Answer 1:", find_nth(numbers, 2020))
+print("Answer 2:", find_nth(numbers, 30000000))