22 lines
570 B
Python
22 lines
570 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
|
|
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
|
|
|
|
|
|
def get_target(line: str, target: int):
|
|
return reduce(lambda a, b: b, yield_numbers(line, target))
|