From fabf10a72bd9496727a175c03435302ed877dd47 Mon Sep 17 00:00:00 2001 From: Rohit Tanwar Date: Tue, 2 Jan 2018 21:14:44 +0530 Subject: [PATCH] fixed typos --- snippets/infixToPostFix.md | 2 +- snippets/postfixToInfix.md | 37 ++++++++++++++++++++----------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/snippets/infixToPostFix.md b/snippets/infixToPostFix.md index b05496977..84371ddbc 100644 --- a/snippets/infixToPostFix.md +++ b/snippets/infixToPostFix.md @@ -1,6 +1,6 @@ ### infixToPostfix -Works perfectly! +Works perfectly! ```js const infixToPostfix = expr => { diff --git a/snippets/postfixToInfix.md b/snippets/postfixToInfix.md index 19e191c6b..52d1a89bb 100644 --- a/snippets/postfixToInfix.md +++ b/snippets/postfixToInfix.md @@ -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()