diff --git a/snippets/RPNSolver.md b/snippets/RPNSolver.md new file mode 100644 index 000000000..e21f42e13 --- /dev/null +++ b/snippets/RPNSolver.md @@ -0,0 +1,24 @@ +### RPNSolver + +Solves the given reverse polish notation +```js +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() +} +``` + +```js + +```