V1 untested

This commit is contained in:
2026-04-30 15:21:38 -04:00
parent c31cb1c699
commit a98042ca5b
7 changed files with 223 additions and 18 deletions

View File

@@ -242,6 +242,10 @@ def generate_quadratic_steps (problem):
##Solve the Roots
steps.extend(algebraic_steps.solve_roots(current))
current = steps[-1]["after"]
# Check for incorrect answers
steps.extend(algebraic_steps.check_roots(problem["problem"], current))
return steps
@@ -270,7 +274,10 @@ def generate_difference_squares_steps (problem):
## Step 2
steps.append(algebraic_steps.square_root_both_sides(current))
current = steps[-1]["after"]
# Check for incorrect answers
steps.extend(algebraic_steps.check_roots(problem["problem"], current))
return steps
@@ -310,6 +317,11 @@ def generate_radical_steps (problem):
left_expr = parse_expr(left, transformations=transformations)
right_expr = parse_expr(right)
steps[-1]["after"] = f"{sstr(left_expr)} = {sstr(right_expr)}"
current = steps[-1]["after"]
# Check for incorrect answers
steps.extend(algebraic_steps.check_roots(problem["problem"], current))
return steps
@@ -353,12 +365,14 @@ def generate_binomial_steps (problem):
current = problem["problem"]
## Distribute Terms
init_printing(order='none')
last_len = -1
while last_len != len(steps):
last_len = len(steps)
steps.extend(algebraic_steps.distribute_step(current))
steps.extend(algebraic_steps.distribute_left_step(current))
if len(steps):
current = steps[-1]["after"]
init_printing(order='lex')
## Combine Like Terms
steps.append(algebraic_steps.combine_like_terms(current))
@@ -376,6 +390,9 @@ def generate_binomial_steps (problem):
current = steps[-1]["after"]
left, right = current.split("=")
left_expr = parse_expr(left, transformations=transformations)
right_expr = parse_expr(right)
steps[-1]["after"] = f"{sstr(left_expr)} = {sstr(right_expr)}"
current = steps[-1]["after"]
## Divide by coefficient
a = left_expr.coeff(x)
@@ -390,6 +407,38 @@ def generate_binomial_steps (problem):
def generate_tricky_steps (problem):
#(x² - x - a) / (x + b) = c
steps = []
x = symbols('x')
current = problem["problem"]
# Multiply Denom
left, right = current.split("=")
left_expr = parse_expr(left, transformations=transformations)
right_expr = parse_expr(right)
num, den = left_expr.as_numer_denom()
steps.append(algebraic_steps.multiply_both_sides(current, den))
current = steps[-1]["after"]
# Distribute out right side
init_printing(order='none')
steps.extend(algebraic_steps.distribute_right_step(current))
current = steps[-1]["after"]
init_printing(order='lex')
# Move Everything to Left
steps.append(algebraic_steps.move_all_to_one_side(current))
current = steps[-1]["after"]
# Combine Like Terms
steps.append(algebraic_steps.combine_like_terms(current))
current = steps[-1]["after"]
# Solve Quadratic
print(f"calling generate_quadratic_steps with: {current}")
steps.extend(generate_quadratic_steps({"problem" : current}))
current = steps[-1]["after"]
# Check for incorrect answers
steps.extend(algebraic_steps.check_roots(problem["problem"], current))
return steps