From dd5e59433c1204bf7c3708e74108f5b0414fd98a Mon Sep 17 00:00:00 2001 From: Julia Lange Date: Fri, 13 Dec 2024 12:00:41 -0800 Subject: [PATCH] 2024 Dec 13th --- Python/2024/13/main.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Python/2024/13/main.py diff --git a/Python/2024/13/main.py b/Python/2024/13/main.py new file mode 100644 index 0000000..2eb89de --- /dev/null +++ b/Python/2024/13/main.py @@ -0,0 +1,25 @@ +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)))