Я работаю над калькулятором RPN и думаю, что я почти там, за исключением того, что он возвращает выражение, а не решение.Попытка оценить выражение
def evaluate(expression)
expression = expression.split
operators = expression.select { |v| v =~ /\W/}
operands = expression.select { |v| v =~ /\d/}
new_expression = operands.zip(operators)
eval = new_expression.join
end
Это должно вернуть -7
:
puts evaluate('5 8 + 4 - 5 *')
#=> 5+8-4*5
Вы не можете получить приоритет оператора в этом направлении. Правильный результат должен быть 45, а не -7. –