Files
aocpy/2015/d14.py
2024-10-20 15:19:25 -04:00

41 lines
1.0 KiB
Python

from lib import get_data
from lib import ints, fst
from collections import defaultdict
data = get_data(__file__).strip()
deers = []
for line in data.splitlines():
speed, time, rest = ints(line)
deers.append([0, speed, time, rest, time, 0])
points = defaultdict(int)
for _ in range(2503):
max_dists = defaultdict(list)
for i, deer in enumerate(deers):
dist, speed, time, rest, time_left, rest_left = deer
if time_left > 0:
time_left -= 1
dist += speed
elif time_left == 0:
time_left = -1
rest_left = rest - 1
elif rest_left > 0:
rest_left -= 1
elif rest_left == 0:
time_left = time - 1
dist += speed
rest_left = -1
max_dists[dist].append(i)
deer[0] = dist
deer[4] = time_left
deer[5] = rest_left
max_deers = max(max_dists.items())
for di in max_deers[1]:
points[di] += 1
print(max(map(fst, deers)))
print(max(points.values()))