From 63f32a51cb76e0ddf7fc53bf1c6b6afbcc64c6ed Mon Sep 17 00:00:00 2001 From: Accusedbold Date: Sun, 26 Apr 2026 17:49:45 -0400 Subject: [PATCH] Added MathHook --- __pycache__/problem_generator.cpython-313.pyc | Bin 12002 -> 12222 bytes main.py | 42 ++++++++++++------ problem_generator.py | 27 ++++++----- requirements.txt | 2 +- 4 files changed, 45 insertions(+), 26 deletions(-) diff --git a/__pycache__/problem_generator.cpython-313.pyc b/__pycache__/problem_generator.cpython-313.pyc index 98e4cb22525607b187cccdc4ed856870176fbf8d..83b0ce7cc12eed143ef74c746065b448c6e3be60 100644 GIT binary patch delta 679 zcmaD9yDy&iGcPX}0}v$FzsvkIkynzjZK8TATd;r>LlOVP9%)vAbVg0VjcY8JxH$9j zi*gflGOJQ2zhu%E(QvkkDK1KmiOer8DNRa^_f0Ixm@LnHkX3MkN;m)Jr_5n2Dv>j) zE{kei5Yb*?vVn0$@dm{$o;$KGn|NL@_Bx?*qUuD>1-|Ib@f^j>LYfP_E=%cOkTlr9 zvLSGT^95mx%}=<~nHhN}-&c>DB%(I?0)ME4`~r^4Vwx93wN@yv$=tztSNk< zW@~{SW=2+!(#i1}>XUs%f(7LluuRUsAgZUE0Gqe8!dbNS!$z%r| zqsajhGkM|4QZ5K?TcNX2$0r6DEm>0Uh4XCOARk zGKci!GdjW6jG(xK0u~_648)%;fW%aWXt-P`gDI391d@k>$&R8T2`UVl%zjl&T3WXl z<20FWu@o1V6y0JkN-fAqOitBgERq5$E(U270F0g2P21+tameXCtngL`ynS4}NfxRdN$kY^^{6^Q48*CIvswi!; dwVo7LHjoLjskmWsyq+H`BctXgw#jStOaWNM%AEiJ delta 525 zcmdlN|0tICGcPX}0}vd@d6$_skynzjVWN7fb_`Pta|}xiYYbZqdkjYmXAD;icMMMq zuRc!^e>$V4z)O%8KTXD4j9QcHrNuU07H48*DK0K4n*4=HpIzG7DyFz7d9pe4K~|oQ zkZ!Kcf0@HrR6=HGT^3cnAfmP)Wrg7iF5XsvShC1f*t|OwO7Rvp{%3-~#6h!Wx@Ti=;EN z{{;G>f#J#IL>;5a*%C8(V5&qe2&-)tl)S^p*gW~2R6447lC%U9*DEn~obUg+3&p;M~roiNVdY)P!(V|2kv67)E1;myC61O;Pa`RJ4 Yb5iY!(t%t?ATF++Y^Luwxl`X10Q)Gdga7~l diff --git a/main.py b/main.py index fd86cba..07d947f 100644 --- a/main.py +++ b/main.py @@ -1,28 +1,44 @@ #All Rights Reserved John Salguero #Starts the backend to my Youtube stream -import requests -from problem_generator import generate_problem - -# url used to solve the math problems -url = "https://api.mathhook.com/solve" +from problem_generator import generate_problem, normalize +from mathhook import parse, solve +from sympy import sympify #define the entry point to the programs def main(): problem = generate_problem() - mathhook_payload = { - "action": "solve", - "expression": problem["problem"], - "steps": True - } - response = requests.post(url, json=mathhook_payload) + print("Generated Problem:") print(problem) print("Solve:") - print(response.status_code) - print(response.text) + equation = apply_strategy(problem) + expr = parse(equation) + result = solve(expr, "x") + print(result) + +def square_both_sides(problem): + lhs, rhs = problem["problem"].split("=") + + lhs = sympify(lhs.strip()) + rhs = sympify(rhs.strip()) + + lhs = lhs ** 2 + rhs = rhs ** 2 + + return f"{normalize(lhs)} = {normalize(rhs)}" + +def factor_or_formula(problem) : + return problem["problem"] + +def apply_strategy(problem): + if problem["type"] == "radical": + return square_both_sides(problem) + if problem["type"] == "quadratics": + return factor_or_formula(problem) + return problem["problem"] #Starts the program if __name__ == "__main__": diff --git a/problem_generator.py b/problem_generator.py index b1b8173..dd38fbf 100644 --- a/problem_generator.py +++ b/problem_generator.py @@ -14,7 +14,7 @@ def generate_linear(): x = symbols('x') expr = a * x + b # expanded = n - s = sstr(expr) + s = normalize(expr) return { "type": "linear", @@ -35,7 +35,7 @@ def generate_hidden_factor(): inner_value = ans + b right_side = a * inner_value + c * inner_value - problem = f"{a}({sstr(inner_expr)}) + {c}({sstr(inner_expr)}) = {right_side}" + problem = f"{a}({normalize(inner_expr)}) + {c}({normalize(inner_expr)}) = {right_side}" return { "type": "hidden_factor", @@ -55,7 +55,7 @@ def generate_distribution (): return { "type": "distribution", - "problem": f"{a}({sstr(inner_expr)}) = {c}", + "problem": f"{a}({normalize(inner_expr)}) = {c}", "solution": ans } @@ -73,7 +73,7 @@ def generate_two_sides (): return { "type": "two_sides", - "problem": f"{sstr(left_exp)} = {sstr(right_exp)}", + "problem": f"{normalize(left_exp)} = {normalize(right_exp)}", "solution": ans } @@ -90,7 +90,7 @@ def generate_like_terms (): return { "type": "like_terms", - "problem": f"{sstr(expr)} = {d}", + "problem": f"{normalize(expr)} = {d}", "solution": ans } @@ -111,7 +111,7 @@ def generate_quadratic (): return { "type": "quadratic", - "problem": f"{sstr(expr)} = 0", + "problem": f"{normalize(expr)} = 0", "solution": solution } @@ -130,7 +130,7 @@ def generate_difference_squares (): return { "type": "difference_squares", - "problem": f"{sstr(expr)} = 0", + "problem": f"{normalize(expr)} = 0", "solution": solution } @@ -144,7 +144,7 @@ def generate_zero_product (): return { "type": "zero_product", - "problem": f"{sstr(expr)} = 0", + "problem": f"{normalize(expr)} = 0", "solution": [-a, -b] } @@ -159,7 +159,7 @@ def generate_radical (): return { "type": "radical", - "problem": f"{sstr(expr)} = {b}", + "problem": f"{normalize(expr)} = {b}", "solution": ans } @@ -175,7 +175,7 @@ def generate_fraction (): return { "type": "fraction", - "problem": f"{sstr(expr)} = {c}", + "problem": f"{normalize(expr)} = {c}", "solution": ans } @@ -197,7 +197,7 @@ def generate_binomial (): return { "type": "binomial", - "problem": f"{sstr(expr)} = {e}", + "problem": f"{normalize(expr)} = {e}", "solution": ans } @@ -214,7 +214,7 @@ def generate_tricky (): expanded = expanded - expr expanded = expanded / (x - r1) # expanded = n - s = sstr(expanded) + s = normalize(expanded) return { "type": "tricky", @@ -222,6 +222,9 @@ def generate_tricky (): "solution": r2 } +def normalize(expr): + return sstr(expr).replace("**", "^") + def generate_problem(): template = random.choice(TEMPLATES) return template() diff --git a/requirements.txt b/requirements.txt index 3876867..7fafc8e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ sympy -requests \ No newline at end of file +mathhook \ No newline at end of file