import collections import itertools reindeers = [ itertools.accumulate(itertools.cycle([speed] * act + [0] * rest)) for line in df.read_text().splitlines() for speed, act, rest in [map(int, re.findall(r'\d+', line))] ] traveled = [[next(rr) for _ in range(2503)] for rr in reindeers] transpose = list(zip(*traveled)) ans1 = max(transpose[-1]) points = [[d == max(dsts) for d in dsts] for dsts in transpose] ans2 = max(sum(pts) for pts in zip(*points))