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))
|