Files
python-aoc-2020/day15/common.py
2020-12-17 00:43:17 +01:00

22 lines
603 B
Python

from functools import reduce
def yield_numbers(line: str, target: int):
nums = [None]*target
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 nums[last_spoken] is not None 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))