update RPN solver
This commit is contained in:
@ -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")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user