我正在研究一個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。 –