2015 day 15.
This commit is contained in:
parent
98f28e96f8
commit
872fd72dcd
57
src/holt59/aoc/2015/day15.py
Normal file
57
src/holt59/aoc/2015/day15.py
Normal file
@ -0,0 +1,57 @@
|
||||
import math
|
||||
import sys
|
||||
from typing import Sequence, cast
|
||||
|
||||
import parse # type: ignore
|
||||
|
||||
|
||||
def score(ingredients: list[list[int]], teaspoons: Sequence[int]) -> int:
|
||||
return math.prod(
|
||||
max(
|
||||
0,
|
||||
sum(
|
||||
ingredient[prop] * teaspoon
|
||||
for ingredient, teaspoon in zip(ingredients, teaspoons)
|
||||
),
|
||||
)
|
||||
for prop in range(len(ingredients[0]) - 1)
|
||||
)
|
||||
|
||||
|
||||
lines = sys.stdin.read().splitlines()
|
||||
|
||||
ingredients: list[list[int]] = []
|
||||
for line in lines:
|
||||
_, *scores = cast(
|
||||
tuple[str, int, int, int, int, int],
|
||||
parse.parse( # type: ignore
|
||||
"{}: capacity {:d}, durability {:d}, flavor {:d}, "
|
||||
"texture {:d}, calories {:d}",
|
||||
line,
|
||||
),
|
||||
)
|
||||
ingredients.append(scores)
|
||||
|
||||
total_teaspoons = 100
|
||||
calories: list[int] = []
|
||||
scores: list[int] = []
|
||||
|
||||
for a in range(total_teaspoons + 1):
|
||||
for b in range(total_teaspoons + 1 - a):
|
||||
for c in range(total_teaspoons + 1 - a - b):
|
||||
teaspoons = (a, b, c, total_teaspoons - a - b - c)
|
||||
|
||||
scores.append(score(ingredients, teaspoons))
|
||||
calories.append(
|
||||
sum(
|
||||
ingredient[-1] * teaspoon
|
||||
for ingredient, teaspoon in zip(ingredients, teaspoons)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
answer_1 = max(scores)
|
||||
print(f"answer 1 is {answer_1}")
|
||||
|
||||
answer_2 = max(score for score, calory in zip(scores, calories) if calory == 500)
|
||||
print(f"answer 2 is {answer_2}")
|
4
src/holt59/aoc/inputs/holt59/2015/day15.txt
Normal file
4
src/holt59/aoc/inputs/holt59/2015/day15.txt
Normal file
@ -0,0 +1,4 @@
|
||||
Sugar: capacity 3, durability 0, flavor 0, texture -3, calories 2
|
||||
Sprinkles: capacity -3, durability 3, flavor 0, texture 0, calories 9
|
||||
Candy: capacity -1, durability 0, flavor 4, texture 0, calories 1
|
||||
Chocolate: capacity 0, durability 0, flavor -2, texture 2, calories 8
|
2
src/holt59/aoc/inputs/tests/2015/day15.txt
Normal file
2
src/holt59/aoc/inputs/tests/2015/day15.txt
Normal file
@ -0,0 +1,2 @@
|
||||
Butterscotch: capacity -1, durability -2, flavor 6, texture 3, calories 8
|
||||
Cinnamon: capacity 2, durability 3, flavor -2, texture -1, calories 3
|
Loading…
Reference in New Issue
Block a user