fixed typos
This commit is contained in:
@ -1,32 +1,35 @@
|
||||
### postfixToInfix
|
||||
|
||||
This one has few errors and does not work properply
|
||||
|
||||
```js
|
||||
``` js
|
||||
const postfixToInfix = RPN => {
|
||||
let convert = RPN.replace(/\^/g,'**').split(/\s+/g).filter(el => !/\s+/.test(el) && el !== '')
|
||||
let stack = []
|
||||
let result = []
|
||||
let friends = {"+" : ["+","-","*","/"],"-":[],"/":["*"],"*":["/","*"],"**":["+","-","*","/"]}
|
||||
let precedence = {null : 4 ,'**':3 ,'/' : 2,'*': 2,'+':1,'-':1 }
|
||||
convert.forEach(symbol => {
|
||||
let stra,strb
|
||||
if(!isNaN(parseFloat(symbol)) && isFinite(symbol)){
|
||||
result.push(symbol)
|
||||
stack.push(null)
|
||||
}
|
||||
else if (Object.keys(friends).includes(symbol)) {
|
||||
a = result.pop()
|
||||
b = result.pop()
|
||||
if(stack.length !==0){
|
||||
if(friends[symbol].includes(stack.pop())){
|
||||
result.push(`${b} ${symbol} ${a}`)
|
||||
stack.push(symbol)
|
||||
}
|
||||
else{
|
||||
result.push(`(${b}) ${symbol} ${a}`)
|
||||
stack.push(symbol)
|
||||
}
|
||||
else if (Object.keys(precedence).includes(symbol)) {
|
||||
let [a,b,opa,opb] = [result.pop(),result.pop(),stack.pop(),stack.pop()]
|
||||
if(precedence[opb] < precedence[symbol]) {
|
||||
strb = `(${b})`
|
||||
}
|
||||
else {result.push(`${b} ${symbol} ${a}`);stack.push(symbol)}
|
||||
}
|
||||
else{
|
||||
strb = `${b}`
|
||||
}
|
||||
if((precedence[opa] < precedence[symbol]) || ((precedence[opa] === precedence[symbol]) && ["/","-"].includes(symbol) )){
|
||||
stra = `(${a})`
|
||||
}
|
||||
else {
|
||||
stra = `${a}`
|
||||
}
|
||||
result.push(strb +symbol + stra)
|
||||
stack.push(symbol)
|
||||
}
|
||||
else throw `${symbol} is not a recognized symbol`
|
||||
})
|
||||
if(result.length === 1) return result.pop()
|
||||
|
||||
Reference in New Issue
Block a user