Day 15 (refactoring)
This commit is contained in:
21
day15/common.py
Normal file
21
day15/common.py
Normal file
@@ -0,0 +1,21 @@
|
||||
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))
|
||||
Reference in New Issue
Block a user