def format_useranswer(user_answer, display=False): user_answer = user_answer.replace('X', 'x') user_answer = user_answer.replace('Y', 'y') user_answer = user_answer.replace('Z', 'z') user_answer = user_answer.replace('abs', 'Abs') user_answer = fmt_abs_value(user_answer) user_answer = user_answer.replace('^', '**') user_answer = parse_expr(user_answer, transformations=transformations, evaluate=False) # user_answer = commute_AbsMul_to_MulAbs(user_answer) # user_answer = commute_AbsMul_to_MulAbs(user_answer) # user_answer = drop_redundant_abs(user_answer) # print('user stuff', user_answer, type(user_answer)) # if isinstance(user_answer, sy.Pow): # if user_answer.args[1] == -1: # # print('My fault!') # # print(user_answer.args) # if isinstance(user_answer.args[0], sy.Pow): # user_base = user_answer.args[0].args[0] # user_expo = -user_answer.args[0].args[1] # user_answer = sy.Pow(user_base, sy.simplify(user_expo)) # # print('alt', user_answer, type(user_answer)) # # for arg in sy.preorder_traversal(user_answer): # # print(arg) # else: # # else: # user_base = user_answer.args[0] # user_expo = user_answer.args[1] # user_answer = sy.Pow(user_base, sy.simplify(user_expo)) # # print('standard', user_answer, type(user_answer)) # # for arg in sy.preorder_traversal(user_answer): # # print(arg) # return f'\\( {sy.latex(user_base)}^{{ {sy.latex(user_expo)} }} \\)' return f'\({sy.latex(user_answer)}\)'
def format_useranswer(self, user_answer, display=False): user_answer = user_answer.replace('X', 'x') user_answer = user_answer.replace('Y', 'y') user_answer = user_answer.replace('abs', 'Abs') user_answer = fmt_abs_value(user_answer) user_answer = user_answer.replace('^', '**') lhs, rhs = user_answer.split('=') lhs = parse_expr(lhs, transformations=transformations) rhs = parse_expr(rhs, transformations=transformations) user_answer = sy.Eq(lhs, rhs) y = sy.Symbol('y') user_answer = sy.solve(user_answer, y)[0] return f'\(y = {sy.latex(user_answer)}\)'
def validator(user_answer): try: user_answer = user_answer.replace('X', 'x') user_answer = user_answer.replace('Y', 'y') user_answer = user_answer.replace('abs', 'Abs') user_answer = fmt_abs_value(user_answer) user_answer = user_answer.replace('^', '**') lhs, rhs = user_answer.split('=') lhs = parse_expr(lhs, transformations=transformations) rhs = parse_expr(rhs, transformations=transformations) user_answer = sy.Eq(lhs, rhs) y = sy.Symbol('y') user_answer = sy.solve(user_answer, y)[0] except: raise SyntaxError
def checkanswer(self, user_answer): user_answer = user_answer.replace('X', 'x') user_answer = user_answer.replace('Y', 'y') user_answer = user_answer.replace('abs', 'Abs') user_answer = fmt_abs_value(user_answer) if 'y' not in user_answer: return False user_answer = user_answer.replace('^', '**') lhs, rhs = user_answer.split('=') lhs = parse_expr(lhs, transformations=transformations) rhs = parse_expr(rhs, transformations=transformations) user_answer = sy.Eq(lhs, rhs) y = sy.Symbol('y') user_answer = sy.solve(user_answer, y)[0] return self.answer.equals(user_answer)
def validator(user_answer): try: # pass user_answer = user_answer.replace('X', 'x') user_answer = user_answer.replace('Y', 'y') user_answer = user_answer.replace('Z', 'z') user_answer = user_answer.replace('abs', 'Abs') user_answer = fmt_abs_value(user_answer) user_answer = user_answer.replace('^', '**') user_answer = parse_expr(user_answer, transformations=transformations) # user_answer = commute_AbsMul_to_MulAbs(user_answer) # user_answer = commute_AbsMul_to_MulAbs(user_answer) # user_answer = drop_redundant_abs(user_answer) f'\({sy.latex(user_answer)}\)' except: raise SyntaxError
def checkanswer(self, user_answer): user_answer = user_answer.replace('X', 'x') user_answer = user_answer.replace('Y', 'y') user_answer = user_answer.replace('Z', 'z') user_answer = user_answer.replace('abs', 'Abs') user_answer = fmt_abs_value(user_answer) user_answer = user_answer.replace('^', '**') user_answer = parse_expr(user_answer, transformations=transformations, evaluate=False) # user_answer = commute_AbsMul_to_MulAbs(user_answer) # user_answer = commute_AbsMul_to_MulAbs(user_answer) #second time really commutes AbsPow to PowAbs # user_answer = drop_redundant_abs(user_answer) # if has_rational_power(user_answer): # return False # print('user stuff', user_answer, type(user_answer)) # for arg in sy.preorder_traversal(user_answer): # print(arg) # if isinstance(user_answer, sy.Pow): # if user_answer.args[1] == -1: # # print('My fault!') # # print(user_answer.args) # if isinstance(user_answer.args[0], sy.Pow): # user_base = user_answer.args[0].args[0] # user_expo = -user_answer.args[0].args[1] # user_answer = sy.Pow(user_base, sy.simplify(user_expo)) # # print('alt', user_answer, type(user_answer)) # # for arg in sy.preorder_traversal(user_answer): # # print(arg) # else: # user_base = user_answer.args[0] # user_expo = user_answer.args[1] # user_answer = sy.Pow(user_base, sy.simplify(user_expo)) # # print('standard', user_answer, type(user_answer)) # # for arg in sy.preorder_traversal(user_answer): # # print(arg) # print(self.answer) # answer = parse_expr(str(self.answer), transformations=transformations, evaluate=False) answer = parse_expr(self.answer, transformations=transformations, evaluate=False) # print('answer stuff', answer, type(answer)) # for arg in sy.preorder_traversal(answer): # print(arg) return user_answer == answer