Add equation process file

This commit is contained in:
Sirin Puenggun 2022-12-11 23:02:57 +07:00
parent 2708cb8867
commit 3680a777ad

View File

@ -0,0 +1,99 @@
from nessesary.polynomial import Polynomial
from nessesary.parser.parser import is_letter, is_op
def change_side(equa:str):
"""
Change all left side expression of = sign
to right side.
>>> change_side("x+2-x^2 = 32-x^3")
'x+2-x^2-32+x^3=0'
"""
temp = ''
for i in equa:
if i == " ":
temp += ""
else:
temp += i
equa = temp
llist = equa.split("=")
left_side, right_side = llist[0], llist[1]
temp = ''
if (right_side[0] != "-") or (right_side[0] != "+"):
temp += '+'
temp += right_side
right_side = temp
for i in right_side:
if i == "+":
left_side += "-"
elif i == "-":
left_side += "+"
else:
left_side += i
return left_side
def simplify(expr:str):
"""
Use to_str() method of polynomial.
to sum and sub all coefficient.
"""
poly = Polynomial(expr)
try:
result = poly.to_str()
return result
except:
raise ValueError
def solver(expr:str):
"""
Solve expression that using polynomial solve().
"""
poly = Polynomial(expr)
try:
result = poly.solve()
return result
except:
raise ValueError
def poly_expand(expr:str):
"""
Add Polynomial Text to all element that
can make polynomial.
>>> poly_expand("(3x+2)^3+4x+5-2+(5x^2)^3")
'Polynomial("3x+2")**3+Polynomial("4x")+Polynomial("5x^2")**3'
"""
i = 0
result = ""
found = False
added = False
while i < len(expr):
char = expr[i]
if char == "(":
result += "Polynomial("
i += 1
found = True
else:
if not found:
if added and is_op(char):
result += f"){char}"
added = False
if is_op(char) and char != "^":
result += f"{char}Polynomial("
i += 1
added = True
continue
result += char
i += 1
if char == ")":
found = False
result = result.replace("++", "+").replace("--","-")
result = result.replace("^^", "^")
result = result.replace("))", ")")
result = result.replace("^", "**")
result = result.replace("Polynomial(Polynomial(", "Polynomial(")
return result