25 lines
740 B
Python
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)))
|