summary refs log blame commit diff stats
path: root/day14.py
blob: a377fa89f4802657e4a383b039c15b716d5215d5 (plain) (tree)




























                                                                            
#!/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))