Польская нотация: что это такое?
Польская нотация (или обратная польская нотация) представляет собой систему записи математических выражений, в которой операторы располагаются после операндов. Таким образом, выражение "2 + 3" в польской нотации будет записываться как "+ 2 3". Это позволяет избежать неоднозначности при вычислении сложных выражений и упрощает их запись и обработку.
Примеры кода на польской нотации:
1. Вычисление выражения "3*(7-2)":
Стандартная запись: 3*(7-2)
Польская нотация: * 3 - 7 2
Код на Python:
stack = []
expression = ['*', 3, '-', 7, 2]
for i in expression[::-1]:
if isinstance(i, int):
stack.append(i)
else:
a = stack.pop()
b = stack.pop()
if i == '+':
stack.append(a + b)
elif i == '-':
stack.append(a - b)
elif i == '*':
stack.append(a * b)
elif i == '/':
stack.append(a / b)
result = stack.pop()
print(result) # 15
2. Вычисление выражения "sqrt(16)+sin(0.5)":
Стандартная запись: sqrt(16)+sin(0.5)
Польская нотация: + sqrt 16 sin 0.5
Код на Python:
import math
stack = []
expression = ['+', 'sqrt', 16, 'sin', 0.5]
for i in expression[::-1]:
if isinstance(i, int) or isinstance(i, float):
stack.append(i)
else:
a = stack.pop()
if i == 'sqrt':
stack.append(math.sqrt(a))
elif i == 'sin':
stack.append(math.sin(a))
result = stack.pop()
print(result) # 4.5