Files
30-seconds-of-code/snippets/RPNSolver.md
Rohit Tanwar 568346beb2 add RPN solver
2018-01-01 20:51:01 +05:30

568 B

RPNSolver

Solves the given reverse polish notation

const RPNSolver = RPN => {
  const isNumeric = str => !isNaN(parseFloat(str)) && isFinite(str);
  const isOperator = str => ['*','-','+','/','**'].includes(str)
  let stack = [];
  let solve  = RPN.replace(/\^/g,'**').split(/\s+/g);
  solve.forEach(symbol => {
    isNumeric(symbol) ? stack.push(symbol) :
          isOperator(symbol) ?
          (a = stack.pop(),
          b = stack.pop(),
          stack.push(eval(a + symbol + b))) : Console.log('Wrong RPN')
  }
)
return stack.pop()
}