Start fixing 2015 for new API.
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import itertools
|
||||
import sys
|
||||
from math import ceil
|
||||
from typing import TypeAlias
|
||||
from typing import Any, Iterator, TypeAlias
|
||||
|
||||
from ..base import BaseSolver
|
||||
|
||||
Modifier: TypeAlias = tuple[str, int, int, int]
|
||||
|
||||
@@ -33,34 +34,31 @@ RINGS: list[Modifier] = [
|
||||
]
|
||||
|
||||
|
||||
lines = sys.stdin.read().splitlines()
|
||||
class Solver(BaseSolver):
|
||||
def solve(self, input: str) -> Iterator[Any]:
|
||||
lines = input.splitlines()
|
||||
|
||||
player_hp = 100
|
||||
player_hp = 100
|
||||
|
||||
boss_attack = int(lines[1].split(":")[1].strip())
|
||||
boss_armor = int(lines[2].split(":")[1].strip())
|
||||
boss_hp = int(lines[0].split(":")[1].strip())
|
||||
boss_attack = int(lines[1].split(":")[1].strip())
|
||||
boss_armor = int(lines[2].split(":")[1].strip())
|
||||
boss_hp = int(lines[0].split(":")[1].strip())
|
||||
|
||||
min_cost, max_cost = 1_000_000, 0
|
||||
for equipments in itertools.product(WEAPONS, ARMORS, RINGS, RINGS):
|
||||
if equipments[-1][0] != "" and equipments[-2] == equipments[-1]:
|
||||
continue
|
||||
|
||||
min_cost, max_cost = 1_000_000, 0
|
||||
for equipments in itertools.product(WEAPONS, ARMORS, RINGS, RINGS):
|
||||
if equipments[-1][0] != "" and equipments[-2] == equipments[-1]:
|
||||
continue
|
||||
cost, player_attack, player_armor = (
|
||||
sum(equipment[1:][k] for equipment in equipments) for k in range(3)
|
||||
)
|
||||
|
||||
cost, player_attack, player_armor = (
|
||||
sum(equipment[1:][k] for equipment in equipments) for k in range(3)
|
||||
)
|
||||
if ceil(boss_hp / max(1, player_attack - boss_armor)) <= ceil(
|
||||
player_hp / max(1, boss_attack - player_armor)
|
||||
):
|
||||
min_cost = min(cost, min_cost)
|
||||
else:
|
||||
max_cost = max(cost, max_cost)
|
||||
|
||||
if ceil(boss_hp / max(1, player_attack - boss_armor)) <= ceil(
|
||||
player_hp / max(1, boss_attack - player_armor)
|
||||
):
|
||||
min_cost = min(cost, min_cost)
|
||||
else:
|
||||
max_cost = max(cost, max_cost)
|
||||
|
||||
|
||||
answer_1 = min_cost
|
||||
print(f"answer 1 is {answer_1}")
|
||||
|
||||
answer_2 = max_cost
|
||||
print(f"answer 2 is {answer_2}")
|
||||
yield min_cost
|
||||
yield max_cost
|
||||
|
||||
Reference in New Issue
Block a user