AdventOfCode/Python/2024/13/main.py
2024-12-13 12:00:41 -08:00

25 lines
740 B
Python

import re
input = open("input", 'r').read().strip()
A = re.findall(r"Button A: X\+(\d*), Y\+(\d*)", input)
B = re.findall(r"Button B: X\+(\d*), Y\+(\d*)", input)
T = re.findall(r"Prize: X=(\d*), Y=(\d*)", input)
AC = 3
BC = 1
def run(p2=0, LIM=100):
p = []
for a,b,t in zip(A,B,T):
xa, ya = int(a[0]), int(a[1])
xb, yb = int(b[0]), int(b[1])
xt, yt = int(t[0])+p2, int(t[1])+p2
alpha = (xt*yb-yt*xb) / (xa*yb-ya*xb)
beta = (yt*xa-xt*ya) / (xa*yb-ya*xb)
if alpha == int(alpha) and beta == int(beta):
if LIM and (alpha > LIM or beta > LIM): continue
p.append(int(alpha*AC + beta*BC))
return p
print(sum(run()))
M = 10000000000000
print(sum(run(M, None)))