diff options
-rw-r--r-- | day15/day15.py | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/day15/day15.py b/day15/day15.py index a5660a4..521d522 100644 --- a/day15/day15.py +++ b/day15/day15.py @@ -1,32 +1,30 @@ -"""Day 15.""" +"""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 +The 30000000 takes a while to complete +""" with open("input") as f: memory = list(map(int, f.read().rstrip().split(","))) -last_pos = {val: pos + 1 for pos, val in enumerate(memory)} +data = {val: {"position": pos + 1, "count": 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) +last = memory[-1] + +# for x in range(2020 - pos + 1): +for x in range(30000000 - pos + 1): + if data[last]["count"] == 1: + val = 0 else: x = pos - 1 - y = last_pos[last] + y = data[last]["position"] val = x - y - memory.append(val) - last_pos[last] = x - if val not in last_pos: - last_pos[val] = pos + data[last]["position"] = x + if val not in data: + data[val] = {"position": pos, "count": 1} + last = val + data[val]["count"] += 1 pos += 1 -print(memory[-1]) +print(val) |