this_append_before for explicable ans abstract_polynom
This commit is contained in:
parent
5d4fe72764
commit
1ecdb458ae
@ -367,7 +367,7 @@ class AbstractPolynom(Explicable):
|
||||
steps.append(AbstractPolynom(coefs, self._letter))
|
||||
|
||||
ans, steps = steps[-1], steps[:-1]
|
||||
ans.steps = steps
|
||||
ans.this_append_before(steps)
|
||||
|
||||
return ans
|
||||
|
||||
@ -407,7 +407,7 @@ class AbstractPolynom(Explicable):
|
||||
ini_step = [Expression(self.postfix_tokens +
|
||||
o_poly.postfix_tokens + [op.add])]
|
||||
ans = p.simplify()
|
||||
ans.steps = ini_step + ans.steps
|
||||
ans.this_append_before(ini_step)
|
||||
return ans
|
||||
|
||||
def __radd__(self, other):
|
||||
@ -427,7 +427,7 @@ class AbstractPolynom(Explicable):
|
||||
ini_step = [Expression(self.postfix_tokens + [op.sub1])]
|
||||
ans = AbstractPolynom([-i for i in self._coef],
|
||||
letter=self._letter).simplify()
|
||||
ans.steps = ini_step + ans.steps
|
||||
ans.this_append_before(ini_step)
|
||||
return ans
|
||||
|
||||
def __sub__(self, other):
|
||||
@ -452,10 +452,9 @@ class AbstractPolynom(Explicable):
|
||||
ini_step = [Expression(self.postfix_tokens +
|
||||
o_poly.postfix_tokens + [op.sub])]
|
||||
o_poly = -o_poly
|
||||
#ini_step += o_poly.steps
|
||||
|
||||
ans = self + o_poly
|
||||
ans.steps = ini_step + ans.steps
|
||||
ans.this_append_before(ini_step)
|
||||
|
||||
return ans
|
||||
|
||||
@ -465,27 +464,32 @@ class AbstractPolynom(Explicable):
|
||||
return o_poly.__sub__(self)
|
||||
|
||||
def __mul__(self, other):
|
||||
""" Overload *
|
||||
r""" Overload *
|
||||
|
||||
>>> p = AbstractPolynom([1,2])
|
||||
>>> p*3
|
||||
< <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [3, 6]>
|
||||
>>> for i in (p*3).explain():
|
||||
... print(i)
|
||||
( 2 x + 1 ) \times 3
|
||||
2 \times 3 x + 3
|
||||
6 x + 3
|
||||
>>> (p*3).steps
|
||||
[[< <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 3, *] >], < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [3, < <class 'pymath.calculus.expression.Expression'> [2, 3, *] >]>]
|
||||
[< <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 3, *] >, < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [3, < <class 'pymath.calculus.expression.Expression'> [2, 3, *] >]>]
|
||||
>>> q = AbstractPolynom([0,0,4])
|
||||
>>> q*3
|
||||
< <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 0, 12]>
|
||||
>>> (q*3).steps
|
||||
[[< <class 'pymath.calculus.expression.Expression'> [4, 'x', 2, ^, *, 3, *] >], < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 0, < <class 'pymath.calculus.expression.Expression'> [4, 3, *] >]>]
|
||||
[< <class 'pymath.calculus.expression.Expression'> [4, 'x', 2, ^, *, 3, *] >, < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 0, < <class 'pymath.calculus.expression.Expression'> [4, 3, *] >]>]
|
||||
>>> r = AbstractPolynom([0,1])
|
||||
>>> r*3
|
||||
< <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 3]>
|
||||
>>> (r*3).steps
|
||||
[[< <class 'pymath.calculus.expression.Expression'> ['x', 3, *] >]]
|
||||
[< <class 'pymath.calculus.expression.Expression'> ['x', 3, *] >]
|
||||
>>> p*q
|
||||
< <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 0, 4, 8]>
|
||||
>>> (p*q).steps
|
||||
[[< <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 4, 'x', 2, ^, *, *] >], < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 0, 4, < <class 'pymath.calculus.expression.Expression'> [2, 4, *] >]>]
|
||||
[< <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 4, 'x', 2, ^, *, *] >, < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 0, 4, < <class 'pymath.calculus.expression.Expression'> [2, 4, *] >]>]
|
||||
>>> p*r
|
||||
< <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 1, 2]>
|
||||
>>> P = AbstractPolynom([1,2,3])
|
||||
@ -520,7 +524,7 @@ class AbstractPolynom(Explicable):
|
||||
o_poly.postfix_tokens + [op.mul])]
|
||||
ans = p.simplify()
|
||||
|
||||
ans.steps = [ini_step] + ans.steps
|
||||
ans.this_append_before(ini_step)
|
||||
return ans
|
||||
|
||||
def __rmul__(self, other):
|
||||
@ -541,7 +545,7 @@ class AbstractPolynom(Explicable):
|
||||
>>> p**2
|
||||
< <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [1, 4, 4]>
|
||||
>>> (p**2).steps
|
||||
[< <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 2, ^] >, [< <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 2, 'x', *, 1, +, *] >], < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [1, [2, 2], < <class 'pymath.calculus.expression.Expression'> [2, 2, *] >]>, < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [1, < <class 'pymath.calculus.expression.Expression'> [2, 2, +] >, 4]>]
|
||||
[< <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 2, ^] >, < <class 'pymath.calculus.expression.Expression'> [2, 'x', *, 1, +, 2, 'x', *, 1, +, *] >, < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [1, [2, 2], < <class 'pymath.calculus.expression.Expression'> [2, 2, *] >]>, < <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [1, < <class 'pymath.calculus.expression.Expression'> [2, 2, +] >, 4]>]
|
||||
>>> p = AbstractPolynom([0,0,1])
|
||||
>>> p**3
|
||||
< <class 'pymath.calculus.abstract_polynom.AbstractPolynom'> [0, 0, 0, 0, 0, 0, 1]>
|
||||
@ -576,7 +580,7 @@ class AbstractPolynom(Explicable):
|
||||
raise AttributeError(
|
||||
"__pw__ not implemented yet when power is greatter than 2")
|
||||
|
||||
ans.steps = ini_step + ans.steps
|
||||
ans.this_append_before(ini_step)
|
||||
return ans
|
||||
|
||||
def __xor__(self, power):
|
||||
|
@ -61,6 +61,23 @@ class Explicable(Renderable):
|
||||
else:
|
||||
return False
|
||||
|
||||
def this_append_before(self, steps):
|
||||
""" Add steps at the beginning of self.steps
|
||||
|
||||
:param steps: list of steps that append before
|
||||
|
||||
>>> e = Explicable()
|
||||
>>> s = ['eat', 'sleep']
|
||||
>>> e.this_append_before(s)
|
||||
>>> print(e.steps)
|
||||
['eat', 'sleep']
|
||||
>>> s0 = ['cook']
|
||||
>>> e.this_append_before(s0)
|
||||
>>> print(e.steps)
|
||||
['cook', 'eat', 'sleep']
|
||||
"""
|
||||
self.steps = steps + self.steps
|
||||
|
||||
class Explicable_int(int, Explicable):
|
||||
""" An Explicable_int is an int which can be explain """
|
||||
isNumber = True
|
||||
|
Loading…
Reference in New Issue
Block a user