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
|
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):
|
class Day(AOCDay):
|
||||||
inputs = [
|
inputs = [
|
||||||
[
|
[
|
||||||
@ -19,13 +34,8 @@ class Day(AOCDay):
|
|||||||
ans = 1
|
ans = 1
|
||||||
|
|
||||||
for i, duration in enumerate(race_times):
|
for i, duration in enumerate(race_times):
|
||||||
count = 0
|
ans *= get_winning_times(duration, race_dists[i])
|
||||||
for ms in range(duration):
|
|
||||||
t = race_dists[i]
|
|
||||||
if ms * (duration - ms) > t:
|
|
||||||
count += 1
|
|
||||||
|
|
||||||
ans *= count
|
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def part2(self) -> Any:
|
def part2(self) -> Any:
|
||||||
@ -33,18 +43,7 @@ class Day(AOCDay):
|
|||||||
time = int("".join(map(str, race_times)))
|
time = int("".join(map(str, race_times)))
|
||||||
dist = int("".join(map(str, race_dists)))
|
dist = int("".join(map(str, race_dists)))
|
||||||
|
|
||||||
lower, higher = 0, 0
|
return get_winning_times(time, dist)
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user