generated from public/aoc_template
Day 6 - cleanup
This commit is contained in:
parent
3a9d84cf92
commit
13b350b10a
35
day06.py
35
day06.py
@ -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__":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user