From 568346beb242efd30afc05c8d4e389b76d62d08c Mon Sep 17 00:00:00 2001 From: Rohit Tanwar Date: Mon, 1 Jan 2018 20:51:01 +0530 Subject: [PATCH] add RPN solver --- snippets/RPNSolver.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 snippets/RPNSolver.md 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 + +```