diff options
-rw-r--r-- | day15/day15.py | 32 | ||||
-rw-r--r-- | day15/input | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/day15/day15.py b/day15/day15.py new file mode 100644 index 0000000..a5660a4 --- /dev/null +++ b/day15/day15.py @@ -0,0 +1,32 @@ +"""Day 15.""" + + +# reading off numbers +# starting numbers in input +# consider the most recently spoken number + +# new unique numbers mean the current says zero +# how far aprat the previous spoken one was + + +with open("input") as f: + memory = list(map(int, f.read().rstrip().split(","))) + +last_pos = {val: pos + 1 for pos, val in enumerate(memory)} + +pos = len(memory) + 1 +for x in range(2020 - pos + 1): + last = memory[-1] + if memory.count(last) == 1: + memory.append(0) + else: + x = pos - 1 + y = last_pos[last] + val = x - y + memory.append(val) + last_pos[last] = x + if val not in last_pos: + last_pos[val] = pos + pos += 1 + +print(memory[-1]) diff --git a/day15/input b/day15/input new file mode 100644 index 0000000..6557303 --- /dev/null +++ b/day15/input @@ -0,0 +1 @@ +0,5,4,1,10,14,7 |