diff options
| author | Cody Hiar <cody@hiar.ca> | 2021-04-16 12:28:08 -0600 | 
|---|---|---|
| committer | Cody Hiar <cody@hiar.ca> | 2021-04-16 12:28:08 -0600 | 
| commit | 2a23ef6d5db67fafea44ec8f1b1f3a264335687e (patch) | |
| tree | edcc185e0888db0ea1946467e0805d245ba08412 /day15 | |
| parent | 8b154828669acb002148988cfebad586c680ff36 (diff) | |
Diffstat (limited to 'day15')
| -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)  | 
