Exemplo n.º 1
0
def pol(t):
    return p.compute(to_postfix(parse(t)))
Exemplo n.º 2
0
assert parse('2') == ['2'], 'Jedno číslo'
assert parse('50 * 2') == ['50', '*', '2'], 'Násobení'
assert parse('(x+2)(3x+2) + 20') == ['(', 'x', '+', '2', ')', '*', '(', '3', '*', 'x', '+', '2', ')', '+', '20'], '(...)(...)'
assert parse('2 x^2') == ['2', '*', 'x', '^', '2'], 'ax^n'
assert parse('2*x+3 - 5^2') == ['2', '*', 'x', '+', '3', '-', '5', '^', '2'], 'Pokročilejší'
assert parse('2x * (5 + 10 * 2x) / 2') == ['2', '*', 'x', '*', '(', '5', '+', '10', '*', '2', '*', 'x', ')', '/', '2'], 'I dělení'
assert parse('-2 * (-5 * -5) + 2') == ['-2', '*', '(', '-5', '*', '-5', ')', '+', '2'], '0-n neboli -n'

print('→ OK')


# postfix
print('POSTFIX')

assert to_postfix(['0']) == ['0'], 'Jedno číslo'
assert to_postfix(['5', '+', '1']) == ['5', '1', '+'], 'Sčítání'
assert to_postfix(['2', '*', '6', '+', '(', '5', '-', '2', ')']) == ['2', '6', '*', '5', '2', '-', '+'], 'Násobení a závorky'
assert to_postfix(['1', '+', '20', '-', '(', '2', '-', '5', '+', '5', ')']) == ['1', '20', '+', '2', '5', '-', '5', '+', '-'], 'Ach! Jak já ty závorky nenávidím!'
assert to_postfix(['15', '-', '(', '2', '+', '9', '*', '2', ')', '*', '11', '-', '(', '15', '+', '3', ')', '/', '3']) == ['15', '2', '9', '2', '*', '+', '11', '*', '-', '15', '3', '+', '3', '/', '-'], 'Trochu složitější'
assert to_postfix(['3', '+', '4', '*', '2', '/', '(', '1', '-', '5', ')', '^', '2', '^', '3']) == ['3', '4', '2', '*', '1', '5', '-', '2', '^', '3', '^', '/', '+'], 'Ty mocniny!'

print('→ OK')


# polynomials
print('POLYNOMIALS')

assert pol('1^3') == '1', 'Bez proměnné 1'
assert pol('2*x^2 + 5x - 12') == '2x^2 + 5x - 12', 'Bez proměnné 2'
assert pol('( 5 * 10 ) / 2 + ( 11 * 2 / 10 ) - 2') == '25.2', 'Bez proměnné 3'