blob: f329f6293f8281d543b1ad92a1bef6dcd8dd61a4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
def solve_machine(a_x: int, a_y: int, b_x: int, b_y: int, prize_x: int, prize_y: int) -> int:
b_press_times = (a_y * prize_x - prize_y * a_x) / (a_y * b_x - b_y * a_x)
a_press_times = (prize_x - b_x * b_press_times) / a_x
cheapest_solution = a_press_times * 3 + b_press_times
if a_press_times.is_integer() and b_press_times.is_integer() and a_press_times >= 0 and b_press_times >= 0:
return int(cheapest_solution)
return 0
with open("input") as f:
all_text = f.read()
result = 0
add_price_pos = 10000000000000
for details in all_text.split("\n\n"):
lines = details.split("\n")
button_a = lines[0][10:].split(", ")
button_b = lines[1][10:].split(", ")
prize = lines[2][7:].split(", ")
result += solve_machine(int(button_a[0][2:]), int(button_a[1][2:]),
int(button_b[0][2:]), int(button_b[1][2:]),
int(prize[0][2:]) + add_price_pos, int(prize[1][2:]) + add_price_pos)
print(result)
|