advent24-llm / day13 /solution_gemini-1.5-pro.py
jerpint's picture
Add solution files
a4da721
import re
file = "input.txt"
def solve():
with open(file, 'r') as f:
machines = []
for line in f:
match = re.match(r"Button A: X\+(\d+), Y\+(\d+)\nButton B: X\+(\d+), Y\+(\d+)\nPrize: X=(\d+), Y=(\d+)", line.strip())
if match:
ax, ay, bx, by, px, py = map(int, match.groups())
machines.append(((ax, ay), (bx, by), (px, py)))
def get_min_cost(machines):
min_costs = []
for (ax, ay), (bx, by), (px, py) in machines:
min_cost = float('inf')
for a in range(101):
for b in range(101):
if a * ax + b * bx == px and a * ay + b * by == py:
min_cost = min(min_cost, 3 * a + b)
min_costs.append(min_cost)
return min_costs
min_costs = get_min_cost(machines)
total_cost = sum(cost for cost in min_costs if cost != float('inf'))
num_prizes = sum(1 for cost in min_costs if cost != float('inf'))
print(total_cost)
offset = 10000000000000
machines_part2 = []
for (ax, ay), (bx, by), (px, py) in machines:
machines_part2.append(((ax, ay), (bx, by), (px + offset, py + offset)))
min_costs_part2 = get_min_cost(machines_part2)
total_cost_part2 = sum(cost for cost in min_costs_part2 if cost != float('inf'))
print(total_cost_part2)
solve()