summaryrefslogtreecommitdiff
path: root/2024/day13/solve.py
blob: ade85f0ba00baae97c540ec4c6cf26c073252dfc (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
27
def solve_machine(a_x: int, a_y: int, b_x: int, b_y: int, prize_x: int, prize_y: int) -> int:
    cheapest_solution = 500
    for a_press_times in range(101):
        for b_press_times in range(101):
            if a_press_times * a_x + b_press_times * b_x == prize_x and a_press_times * a_y + b_press_times * b_y == prize_y and a_press_times * 3 + b_press_times < cheapest_solution:
                cheapest_solution = a_press_times * 3 + b_press_times

    if cheapest_solution == 500:
        return 0

    return cheapest_solution


with open("input") as f:
    all_text = f.read()

result = 0
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:]), int(prize[1][2:]))

print(result)