From ff9a4ff546fedd56824cf84be937df770e14ecd6 Mon Sep 17 00:00:00 2001 From: Rohit Tanwar Date: Mon, 1 Jan 2018 20:59:54 +0530 Subject: [PATCH] update RPN solver --- snippets/RPNSolver.md | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/snippets/RPNSolver.md b/snippets/RPNSolver.md index e21f42e13..1b46dcb9a 100644 --- a/snippets/RPNSolver.md +++ b/snippets/RPNSolver.md @@ -8,14 +8,25 @@ const RPNSolver = RPN => { 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') + if(isNumeric(symbol)) {stack.push(symbol)} + else if (isOperator(symbol)){ + a = stack.pop(); + b = stack.pop(); + if(symbol === "+") { + stack.push(parseFloat(a) + parseFloat(b)); + } else if(symbol === "-") { + stack.push(parseFloat(b) - parseFloat(a)); + } else if(symbol === "*") { + stack.push(parseFloat(a) * parseFloat(b)); + } else if(symbol === "/") { + stack.push(parseFloat(b) / parseFloat(a)); + } else if(symbol === "**") { + stack.push(parseFloat(a) ** parseFloat(b)); + } + } else { console.log('Wrong RPN')} } ) -return stack.pop() +return stack.length === 1 ? stack.pop : console.log("error") } ```