#!/usr/bin/env python from collections import defaultdict with open('day14.txt') as data: racers = [tuple(map(int, (line[3], line[6], line[-2]))) for reindeer in data if (line := reindeer.strip().split())] def distance(reindeer, time): speed, dur, rest = reindeer total_distance = speed * dur * (time // (dur + rest)) remainder = time % (dur + rest) total_distance += speed * remainder if remainder <= dur else speed * dur return total_distance print(max(map(lambda x: distance(x, 2503), racers))) def points(reindeer, TOTAL_TIME): scores = defaultdict(int) for second in range(1, TOTAL_TIME+1): distances = {deer: distance(deer, second) for deer in reindeer} max_dist = max(distances.values()) for deer in distances: if distances[deer] == max_dist: scores[deer] += 1 return max(scores.values()) print(points(racers, 2503))