|
@@ -25,39 +25,36 @@ class TestLeidenOefenopgave(TestCase):
|
|
|
self.assertEqual(str(rewrite(exp)), solution)
|
|
self.assertEqual(str(rewrite(exp)), solution)
|
|
|
|
|
|
|
|
def test_1_2(self):
|
|
def test_1_2(self):
|
|
|
- for chain in [['(x+1)^3', '(x + 1)(x + 1) ^ 2',
|
|
|
|
|
- '(x + 1)(x + 1)(x + 1)',
|
|
|
|
|
- '(xx + x * 1 + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
- '(x ^ (1 + 1) + x * 1 + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
- '(x ^ 2 + x * 1 + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
- '(x ^ 2 + x + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
- '(x ^ 2 + x + x + 1 * 1)(x + 1)',
|
|
|
|
|
- '(x ^ 2 + (1 + 1)x + 1 * 1)(x + 1)',
|
|
|
|
|
- '(x ^ 2 + 2x + 1 * 1)(x + 1)',
|
|
|
|
|
- '(x ^ 2 + 2x + 1)(x + 1)',
|
|
|
|
|
- '(x ^ 2 + 2x)x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
- 'xx ^ 2 + x * 2x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ (1 + 2) + x * 2x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + x * 2x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 2xx + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 2x ^ (1 + 1) + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 2x ^ 2 + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 2x ^ 2 + 1x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 2x ^ 2 + x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + (2 + 1)x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 3x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 3x ^ 2 + 2x + 1x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 3x ^ 2 + 2x + x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 3x ^ 2 + (2 + 1)x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 3x ^ 2 + 3x + 1 * 1',
|
|
|
|
|
- 'x ^ 3 + 3x ^ 2 + 3x + 1',
|
|
|
|
|
- ]
|
|
|
|
|
- ]:
|
|
|
|
|
- self.assertRewrite(chain)
|
|
|
|
|
|
|
+ self.assertRewrite(['(x+1)^3', '(x + 1)(x + 1) ^ 2',
|
|
|
|
|
+ '(x + 1)(x + 1)(x + 1)',
|
|
|
|
|
+ '(xx + x * 1 + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
+ '(x ^ (1 + 1) + x * 1 + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
+ '(x ^ 2 + x * 1 + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
+ '(x ^ 2 + x + 1x + 1 * 1)(x + 1)',
|
|
|
|
|
+ '(x ^ 2 + x + x + 1 * 1)(x + 1)',
|
|
|
|
|
+ '(x ^ 2 + (1 + 1)x + 1 * 1)(x + 1)',
|
|
|
|
|
+ '(x ^ 2 + 2x + 1 * 1)(x + 1)',
|
|
|
|
|
+ '(x ^ 2 + 2x + 1)(x + 1)',
|
|
|
|
|
+ '(x ^ 2 + 2x)x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
+ 'xx ^ 2 + x * 2x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ (1 + 2) + x * 2x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + x * 2x + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + x ^ (1 + 1) * 2 + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + x ^ 2 * 2 + (x ^ 2 + 2x) * 1 + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + x ^ 2 * 2 + 1x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + x ^ 2 * 2 + x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + (2 + 1)x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + 3x ^ 2 + 1 * 2x + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + 3x ^ 2 + 2x + 1x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + 3x ^ 2 + 2x + x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + 3x ^ 2 + (2 + 1)x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + 3x ^ 2 + 3x + 1 * 1',
|
|
|
|
|
+ 'x ^ 3 + 3x ^ 2 + 3x + 1',
|
|
|
|
|
+ ])
|
|
|
|
|
|
|
|
def test_1_3(self):
|
|
def test_1_3(self):
|
|
|
# (x+1)^2 -> x^2 + 2x + 1
|
|
# (x+1)^2 -> x^2 + 2x + 1
|
|
|
- for chain in [['(x+1)^2', '(x + 1)(x + 1)',
|
|
|
|
|
|
|
+ self.assertRewrite(['(x+1)^2', '(x + 1)(x + 1)',
|
|
|
'xx + x * 1 + 1x + 1 * 1',
|
|
'xx + x * 1 + 1x + 1 * 1',
|
|
|
'x ^ (1 + 1) + x * 1 + 1x + 1 * 1',
|
|
'x ^ (1 + 1) + x * 1 + 1x + 1 * 1',
|
|
|
'x ^ 2 + x * 1 + 1x + 1 * 1',
|
|
'x ^ 2 + x * 1 + 1x + 1 * 1',
|
|
@@ -65,26 +62,24 @@ class TestLeidenOefenopgave(TestCase):
|
|
|
'x ^ 2 + x + x + 1 * 1',
|
|
'x ^ 2 + x + x + 1 * 1',
|
|
|
'x ^ 2 + (1 + 1)x + 1 * 1',
|
|
'x ^ 2 + (1 + 1)x + 1 * 1',
|
|
|
'x ^ 2 + 2x + 1 * 1',
|
|
'x ^ 2 + 2x + 1 * 1',
|
|
|
- 'x ^ 2 + 2x + 1'],
|
|
|
|
|
- ]:
|
|
|
|
|
- self.assertRewrite(chain)
|
|
|
|
|
|
|
+ 'x ^ 2 + 2x + 1',
|
|
|
|
|
+ ])
|
|
|
|
|
|
|
|
def test_1_4(self):
|
|
def test_1_4(self):
|
|
|
# (x-1)^2 -> x^2 - 2x + 1
|
|
# (x-1)^2 -> x^2 - 2x + 1
|
|
|
- for chain in [['(x-1)^2', '(x - 1)(x - 1)',
|
|
|
|
|
- 'xx + x * -1 - 1x - 1 * -1',
|
|
|
|
|
- 'x ^ (1 + 1) + x * -1 - 1x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 + x * -1 - 1x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 - x * 1 - 1x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 - x - 1x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 - x - x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 + (1 + 1) * -x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 + 2 * -x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 - 2x - 1 * -1',
|
|
|
|
|
- 'x ^ 2 - 2x - -1',
|
|
|
|
|
- 'x ^ 2 - 2x + 1',
|
|
|
|
|
- ]]:
|
|
|
|
|
- self.assertRewrite(chain)
|
|
|
|
|
|
|
+ self.assertRewrite(['(x-1)^2', '(x - 1)(x - 1)',
|
|
|
|
|
+ 'xx + x * -1 - 1x - 1 * -1',
|
|
|
|
|
+ 'x ^ (1 + 1) + x * -1 - 1x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 + x * -1 - 1x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 - x * 1 - 1x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 - x - 1x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 - x - x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 + (1 + 1) * -x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 + 2 * -x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 - 2x - 1 * -1',
|
|
|
|
|
+ 'x ^ 2 - 2x - -1',
|
|
|
|
|
+ 'x ^ 2 - 2x + 1',
|
|
|
|
|
+ ])
|
|
|
|
|
|
|
|
def test_1_4_1(self):
|
|
def test_1_4_1(self):
|
|
|
self.assertRewrite(['x * -1 + 1x',
|
|
self.assertRewrite(['x * -1 + 1x',
|
|
@@ -132,8 +127,7 @@ class TestLeidenOefenopgave(TestCase):
|
|
|
'(-20 + 20)x + 16x ^ 2 - 25',
|
|
'(-20 + 20)x + 16x ^ 2 - 25',
|
|
|
'0x + 16x ^ 2 - 25',
|
|
'0x + 16x ^ 2 - 25',
|
|
|
'0 + 16x ^ 2 - 25',
|
|
'0 + 16x ^ 2 - 25',
|
|
|
- '-25 + 16x ^ 2'])
|
|
|
|
|
- # FIXME: '16x ^ 2 - 25'])
|
|
|
|
|
|
|
+ '16x ^ 2 - 25'])
|
|
|
|
|
|
|
|
def test_2(self):
|
|
def test_2(self):
|
|
|
pass
|
|
pass
|