update RPN solver

This commit is contained in:
Rohit Tanwar
2018-01-01 20:59:54 +05:30
parent 864ddd4549
commit ff9a4ff546

View File

@ -8,14 +8,25 @@ const RPNSolver = RPN => {
let stack = []; let stack = [];
let solve = RPN.replace(/\^/g,'**').split(/\s+/g); let solve = RPN.replace(/\^/g,'**').split(/\s+/g);
solve.forEach(symbol => { solve.forEach(symbol => {
isNumeric(symbol) ? stack.push(symbol) : if(isNumeric(symbol)) {stack.push(symbol)}
isOperator(symbol) ? else if (isOperator(symbol)){
(a = stack.pop(), a = stack.pop();
b = stack.pop(), b = stack.pop();
stack.push(eval(a + symbol + b))) : Console.log('Wrong RPN') 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")
} }
``` ```