On Nov 30, 2007 8:28 AM, Ruby Quiz <james / grayproductions.net> wrote: > The three rules of Ruby Quiz: > > 1. Please do not post any solutions or spoiler discussion for this quiz until > 48 hours have passed from the time on this message. > > 2. Support Ruby Quiz by submitting ideas as often as you can: > > http://www.rubyquiz.com/ > > 3. Enjoy! > > Suggestion: A [QUIZ] in the subject of emails about the problem helps everyone > on Ruby Talk follow the discussion. Please reply to the original quiz message, > if you can. > > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > There are many different ways to write mathematical equations. Infix notation > is probably the most popular and yields expressions like: > > 2 * (3 + 5) > > Some people like to work with a postfix notation (often called Reverse Polish > Notation or just RPN) though, which doesn't require parentheses for the same > equation: > > 2 3 5 + * > > You can compare the results of these equations using the Unix utilities bc > (infix) and dc (postfix): > > $ bc <<< '2 * (3 + 5)' > 16 > $ dc <<< '2 3 5 + * p' > 16 > > The "p" instruction tacked onto the end of the expression for dc just tells it > to print the result. > > This week's quiz is to write a script that translates postfix expressions into > the equivalent infix expression. In the simplest form, your script should > function as such: > > $ ruby postfix_to_infix.rb '2 3 +' > 2 + 3 > > At minimum, try to support the four basic math operators: +, -, *, and /. Feel > free to add others though. For numbers, remember to accept decimal values. > > You can count on the postfix expressions having spaces between each term, if you > like. While dc is content with 2 3+p, you don't have to support it unless you > want to. > > For an added bonus, try to keep the parentheses added to infix expressions to > the minimum of what is needed. For example, prefer these results: > > $ ruby postfix_to_infix.rb '56 34 213.7 + * 678 -' > 56 * (34 + 213.7) - 678 > $ ruby postfix_to_infix.rb '1 56 35 + 16 9 - / +' > 1 + (56 + 35) / (16 - 9) > > to these: > > $ ruby postfix_to_infix.rb '56 34 213.7 + * 678 -' > ((56 * (34 + 213.7)) - 678) > $ ruby postfix_to_infix.rb '1 56 35 + 16 9 - / +' > (1 + ((56 + 35) / (16 - 9))) > > Posting equations and your output is not a spoiler. > > I had this as an assignment for a class once, in Java, so I'll sit this one out. Fun quiz!