Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Counter update solution in Clear category for Simplification by DiZ
from collections import Counter
from re import sub
class Polynomial(Counter):
def __add__(self, q):
new = Polynomial(self)
new.update(q)
return new
def __mul__(self, q):
return sum((Polynomial({i+j: self[i]*q[j]for j in q})for i in self),Polynomial())
def __neg__(self):
return Polynomial({0:-1}) * self
def __sub__(self, q):
return -q + self
def __str__(self):
serie = sorted(self.items(), reverse=True)
monomials = ['{:+}*1*x**{}'[:4*i+4].format(e, i) for i, e in serie if e]
return sub('(?<=[-+*])1\*', '', ''.join(monomials)).lstrip('+') or '0'
def simplify(expr, x=Polynomial({1:1})):
return str(eval(sub('(\d+)', 'Polynomial({0:\g<1>})', expr)))
Feb. 10, 2015