class Calculator
Public Class Methods
calculate(expression)
click to toggle source
# File lib/scicalc.rb, line 2 def self.calculate(expression) include Math expression=expression.split operands=[] evaluation=[] expression.each do |x| case x when /\d/ evaluation.push(x.to_f) when "PI", "E" evaluation.push(x=="PI" ? Math::PI : Math::E) when "sin", "cos", "tan", "asin", "acos", "atan", "sinh", "cosh", "tanh", "asinh", "acosh", "atanh", "atan2", "exp", "log" operands=evaluation.pop(1) evaluation.push((Math.send(x, operands[0]))) when "-", "/", "*", "+", "**" operands=evaluation.pop(2) evaluation.push(operands[0].send(x, operands[1])) end end puts evaluation end