В данном упражнении необходимо реализовать стековую машину, то есть алгоритм, проводящий вычисления по обратной польской записи.
Обратная польская нотация или постфиксная нотация — форма записи математических и логических выражений, в которой операнды расположены перед знаками операций. Выражение читается слева направо. Когда в выражении встречается знак операции, выполняется соответствующая операция над двумя ближайшими операндами, находящимися слева от знака операции. Результат операции заменяет в выражении последовательность её операндов и знак, после чего выражение вычисляется дальше по тому же правилу. Таким образом, результатом вычисления всего выражения становится результат последней вычисленной операции.
Например, выражение (1 + 2) * 4 + 3
в постфиксной нотации будет выглядеть так: 1 2 + 4 * 3 +
, а результат вычисления: 15
. Другой пример - выражение: 7 - 2 * 3
, в постфиксной нотации: 7 2 3 * -
, результат: 1
.
src\Arrays.php
Реализуйте функцию calcInPolishNotation
, которая принимает массив, каждый элемент которого содержит число или знак операции (+
, -
, *
, /
). Функция должна вернуть результат вычисления по обратной польской записи. Если в какой-то момент происходит деление на ноль, функция должна вернуть значение null
.
<?php
calcInPolishNotation([1, 2, '+', 4, '*', 3, '+']);
// → 15
calcInPolishNotation([7, 2, 3, '*', '-']);
// → 1
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.