Solve day 6

This commit is contained in:
Nettika
2023-12-10 18:44:26 -08:00
parent 001eeb692f
commit 720def8fa9
3 changed files with 67 additions and 0 deletions

28
06/__main__.py Normal file
View File

@@ -0,0 +1,28 @@
from pathlib import Path
from puzzle import Race, solve
def main():
print("Permutations of Winning Strategies:")
print(
"Part 1 -",
solve(
[
Race(61, 430),
Race(67, 1036),
Race(75, 1307),
Race(71, 1150),
]
),
)
print(
"Part 2 -",
solve(
[Race(61677571, 430103613071150)],
),
)
if __name__ == "__main__":
main()

21
06/puzzle.py Normal file
View File

@@ -0,0 +1,21 @@
from typing import NamedTuple
class Race(NamedTuple):
time: int
distance: int
def solve(input: list[Race]):
permutations_total = 1
for race in input:
strategies_total = 0
for hold_time in range(race.time):
race_time = race.time - hold_time
realized_distance = race_time * hold_time
if realized_distance > race.distance:
strategies_total += 1
permutations_total = permutations_total * strategies_total
return permutations_total

18
06/puzzle_test.py Normal file
View File

@@ -0,0 +1,18 @@
from puzzle import Race, solve
def test_solve_pt_1():
assert (
solve(
[
Race(7, 9),
Race(15, 40),
Race(30, 200),
]
)
== 288
)
def test_solve_pt_2():
assert solve([Race(71530, 940200)]) == 71503