Evaluar Notacion Polaca Inversa

Entradas Archivos Wallpaper ASCCI Problemas

Evaluar Notacion Polaca Inversa

Este problema consisten en dada una lista de numeros y simbolos evaluar esta lista como si fuiera una notacion polaca

Solucion

# @param {String[]} tokens
# @return {Integer}
def eval_rpn(tokens)
    stack = []
    while !tokens.empty?
        c = tokens.shift
        begin
            val = Integer(c)
            stack<<val
        rescue 
            n1,n2 = stack.pop(2)
            case c
            when "+"
                res = n1+n2
            when "-"
                res = n1-n2
            when "*"
                res = n1*n2
            when "/"
                res = (n1/n2.to_f).to_i
            end
            stack<<res
        end
    end
    stack.pop
end