Files
python-aoc-2020/day15/common.py
Sebastian Seedorf 20e80270ca Day 15 (visualize)
2020-12-15 23:10:09 +01:00

22 lines
582 B
Python

from functools import reduce
def yield_numbers(line: str, target: int):
nums = {}
turn = 0
last_spoken = 0
for starting in map(int, line.split(",")):
nums[last_spoken] = turn
turn += 1
last_spoken = starting
yield turn, last_spoken, nums
for t in range(turn, target):
n = t - nums[last_spoken] if last_spoken in nums else 0
nums[last_spoken] = t
last_spoken = n
yield t+1, last_spoken, nums
def get_target(line: str, target: int):
return reduce(lambda a, b: b, yield_numbers(line, target))