Day 6 - cleanup

This commit is contained in:
Stefan Harmuth 2023-12-06 06:21:49 +01:00
parent 3a9d84cf92
commit 13b350b10a

View File

@ -2,6 +2,21 @@ from tools.aoc import AOCDay
from typing import Any
def get_winning_times(max_ms: int, dist: int) -> int:
lower, higher = 0, 0
for ms in range(max_ms):
if ms * (max_ms - ms) > dist:
lower = ms
break
for ms in range(max_ms, 0, -1):
if ms * (max_ms - ms) > dist:
higher = ms
break
return higher - lower + 1
class Day(AOCDay):
inputs = [
[
@ -19,13 +34,8 @@ class Day(AOCDay):
ans = 1
for i, duration in enumerate(race_times):
count = 0
for ms in range(duration):
t = race_dists[i]
if ms * (duration - ms) > t:
count += 1
ans *= get_winning_times(duration, race_dists[i])
ans *= count
return ans
def part2(self) -> Any:
@ -33,18 +43,7 @@ class Day(AOCDay):
time = int("".join(map(str, race_times)))
dist = int("".join(map(str, race_dists)))
lower, higher = 0, 0
for ms in range(time):
if ms * (time - ms) > dist:
lower = ms
break
for ms in range(time, 0, -1):
if ms * (time - ms) > dist:
higher = ms
break
return higher - lower + 1
return get_winning_times(time, dist)
if __name__ == "__main__":