print statements in places
This commit is contained in:
@@ -37,9 +37,11 @@ def generate_linear_steps(problem):
|
||||
elif b.is_positive:
|
||||
steps.append(algebraic_steps.subtract_both_sides(current, b))
|
||||
current = steps[-1]["after"]
|
||||
## Second Step
|
||||
if a != 1:
|
||||
## Second Step
|
||||
if a != 1 and a != -1:
|
||||
steps.append(algebraic_steps.divide_both_sides(current, a))
|
||||
elif a == -1:
|
||||
steps.append(algebraic_steps.multiply_both_sides(current, a))
|
||||
|
||||
return steps
|
||||
|
||||
@@ -173,6 +175,7 @@ def generate_like_terms_steps (problem):
|
||||
#ax + bx + c = d
|
||||
steps = []
|
||||
|
||||
x = symbols('x')
|
||||
current = problem["problem"]
|
||||
|
||||
## First Step
|
||||
@@ -183,6 +186,23 @@ def generate_like_terms_steps (problem):
|
||||
left, right = current.split("=")
|
||||
left_expr = parse_expr(left)
|
||||
b = left_expr.subs(x, 0)
|
||||
if b.is_negative:
|
||||
steps.append(algebraic_steps.add_both_sides(current, -b))
|
||||
elif b.is_positive:
|
||||
steps.append(algebraic_steps.subtract_both_sides(current, b))
|
||||
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"]
|
||||
|
||||
## Third Step
|
||||
div = left_expr.coeff(x)
|
||||
if div != 1 and div != -1:
|
||||
steps.append(algebraic_steps.divide_both_sides(current, div))
|
||||
elif div == -1:
|
||||
steps.append(algebraic_steps.multiply_both_sides(current, div))
|
||||
|
||||
return steps
|
||||
|
||||
@@ -191,6 +211,38 @@ def generate_quadratic_steps (problem):
|
||||
#ax² + bx + c = 0
|
||||
steps = []
|
||||
|
||||
x = symbols('x')
|
||||
current = problem["problem"]
|
||||
left, right = current.split("=")
|
||||
left_expr = parse_expr(left, transformations=transformations)
|
||||
right_expr = parse_expr(right)
|
||||
a = left_expr.coeff(x**2)
|
||||
b = left_expr.coeff(x)
|
||||
c = left_expr.subs(x, 0)
|
||||
div = gcd(a, b, c)
|
||||
if a.is_negative:
|
||||
div = -div
|
||||
|
||||
## First Step
|
||||
if div != 1 and c.is_zero == False:
|
||||
steps.append(algebraic_steps.factor_out(current, div))
|
||||
current = steps[-1]["after"]
|
||||
elif c.is_zero:
|
||||
div = gcd(a, b)
|
||||
steps.append(algebraic_steps.factor_out(current, div*x))
|
||||
current = steps[-1]["after"]
|
||||
|
||||
if c.is_zero == False:
|
||||
## Second Steps
|
||||
left, right = current.split("=")
|
||||
left_expr = parse_expr(left, transformations=transformations)
|
||||
inner = left_expr / div
|
||||
steps.extend(algebraic_steps.trinomial_by_grouping(current,inner))
|
||||
current = steps[-1]["after"]
|
||||
|
||||
##Solve the Roots
|
||||
steps.extend(algebraic_steps.solve_roots(current))
|
||||
|
||||
return steps
|
||||
|
||||
@register_steps_generator("difference_squares")
|
||||
@@ -198,12 +250,37 @@ def generate_difference_squares_steps (problem):
|
||||
#x² - a² = 0
|
||||
steps = []
|
||||
|
||||
x = symbols('x')
|
||||
current = problem["problem"]
|
||||
left, right = current.split("=")
|
||||
left_expr = parse_expr(left, transformations=transformations)
|
||||
b = left_expr.subs(x, 0)
|
||||
|
||||
## Step 1
|
||||
if b.is_negative:
|
||||
steps.append(algebraic_steps.add_both_sides(current, -b))
|
||||
elif b.is_positive:
|
||||
steps.append(algebraic_steps.subtract_both_sides(current, b))
|
||||
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"]
|
||||
|
||||
## Step 2
|
||||
steps.append(algebraic_steps.square_root_both_sides(current))
|
||||
|
||||
|
||||
return steps
|
||||
|
||||
@register_steps_generator("zero_product")
|
||||
def generate_zero_product_steps (problem):
|
||||
#(x + a)(x + b) = 0
|
||||
steps = []
|
||||
current = problem["problem"]
|
||||
|
||||
steps.extend(algebraic_steps.solve_roots(current))
|
||||
|
||||
return steps
|
||||
|
||||
@@ -211,6 +288,28 @@ def generate_zero_product_steps (problem):
|
||||
def generate_radical_steps (problem):
|
||||
#√(x + a) = b
|
||||
steps = []
|
||||
x = symbols('x')
|
||||
current = problem["problem"]
|
||||
|
||||
|
||||
## First Step
|
||||
steps.append(algebraic_steps.square_both_sides(current))
|
||||
|
||||
## Second Step
|
||||
current = steps[-1]["after"]
|
||||
left, right = current.split("=")
|
||||
left_expr = parse_expr(left, transformations=transformations)
|
||||
b = left_expr.subs(x, 0)
|
||||
if b.is_zero != False:
|
||||
if b.is_negative:
|
||||
steps.append(algebraic_steps.add_both_sides(current, -b))
|
||||
elif b.is_positive:
|
||||
steps.append(algebraic_steps.subtract_both_sides(current, b))
|
||||
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)}"
|
||||
|
||||
return steps
|
||||
|
||||
@@ -218,6 +317,31 @@ def generate_radical_steps (problem):
|
||||
def generate_fraction_steps (problem):
|
||||
#(x/a) + b = c
|
||||
steps = []
|
||||
x = symbols('x')
|
||||
current = problem["problem"]
|
||||
|
||||
## First Step
|
||||
left, right = current.split("=")
|
||||
left_expr = parse_expr(left, transformations=transformations)
|
||||
b = left_expr.subs(x, 0)
|
||||
if b.is_zero == False:
|
||||
if b.is_negative:
|
||||
steps.append(algebraic_steps.add_both_sides(current, -b))
|
||||
elif b.is_positive:
|
||||
steps.append(algebraic_steps.subtract_both_sides(current, b))
|
||||
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"]
|
||||
|
||||
## Second step
|
||||
num, den = fraction(left_expr)
|
||||
if left_expr.subs(x,1).is_negative:
|
||||
steps.append(algebraic_steps.multiply_both_sides(current, -den))
|
||||
else:
|
||||
steps.append(algebraic_steps.multiply_both_sides(current, den))
|
||||
|
||||
return steps
|
||||
|
||||
@@ -225,6 +349,17 @@ def generate_fraction_steps (problem):
|
||||
def generate_binomial_steps (problem):
|
||||
#a(x + b) + c(x + d) = e
|
||||
steps = []
|
||||
current = problem["problem"]
|
||||
|
||||
last_len = -1
|
||||
while last_len != len(steps):
|
||||
last_len = len(steps)
|
||||
steps.extend(algebraic_steps.distribute_step(current))
|
||||
if len(steps):
|
||||
current = steps[-1]["after"]
|
||||
|
||||
steps.append(algebraic_steps.combine_like_terms(current))
|
||||
current = steps[-1]["after"]
|
||||
|
||||
return steps
|
||||
|
||||
|
||||
Reference in New Issue
Block a user