add minN and maxN
This commit is contained in:
@ -1,33 +0,0 @@
|
|||||||
### infixToPostfix
|
|
||||||
|
|
||||||
Works perfectly!
|
|
||||||
|
|
||||||
```js
|
|
||||||
const infixToPostfix = expr => {
|
|
||||||
let rpn = ''
|
|
||||||
let solve = expr.replace(/\^/g,'**').match(/([0-9]+|[\+\(\)\/\-]|\*+)/g).filter(el => !/\s+/.test(el) && el !== '')
|
|
||||||
let stack = []
|
|
||||||
let precedence = {'**':5,'/':4,'*':4,'+':3,'-':3}
|
|
||||||
solve.forEach(symbol => {
|
|
||||||
if(!isNaN(parseFloat(symbol)) && isFinite(symbol)){
|
|
||||||
rpn += symbol + ' '
|
|
||||||
}
|
|
||||||
else if (Object.keys(precedence).includes(symbol)) {
|
|
||||||
while(((precedence[symbol] < precedence[stack[stack.length-1]]) || ((precedence[symbol] == precedence[stack[stack.length-1]]) && symbol !== "**"))&&(stack[stack.length - 1] !== '(')) {
|
|
||||||
rpn += stack.pop() + ' '
|
|
||||||
}
|
|
||||||
stack.push(symbol)
|
|
||||||
}
|
|
||||||
else if(symbol === '('){stack.push(symbol)}
|
|
||||||
else if(symbol === ')'){while (stack[stack.length - 1] !== '('){rpn += stack.pop() + ' '; if (stack.length === 0){throw `Mismatched parantheses`}} stack.pop()}
|
|
||||||
else {throw `${symbol} is not a recognized symbol`}
|
|
||||||
})
|
|
||||||
while(stack.length !== 0){
|
|
||||||
rpn += stack.pop() + ' '
|
|
||||||
}
|
|
||||||
return rpn
|
|
||||||
}
|
|
||||||
```
|
|
||||||
```js
|
|
||||||
|
|
||||||
```
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
### postfixToInfix
|
|
||||||
|
|
||||||
|
|
||||||
``` js
|
|
||||||
const postfixToInfix = RPN => {
|
|
||||||
let convert = RPN.replace(/\^/g,'**').split(/\s+/g).filter(el => !/\s+/.test(el) && el !== '')
|
|
||||||
let stack = []
|
|
||||||
let result = []
|
|
||||||
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(precedence).includes(symbol)) {
|
|
||||||
let [a,b,opa,opb] = [result.pop(),result.pop(),stack.pop(),stack.pop()]
|
|
||||||
if(precedence[opb] < precedence[symbol]) {
|
|
||||||
strb = `(${b})`
|
|
||||||
}
|
|
||||||
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()
|
|
||||||
else throw `${RPN} is not a correct RPN`
|
|
||||||
}
|
|
||||||
```
|
|
||||||
```js
|
|
||||||
|
|
||||||
```
|
|
||||||
Reference in New Issue
Block a user