On Sun, 02 Dec 2007 21:47:29 -0500, Dave Pederson wrote:

> Note:  parts of this message were removed by the gateway to make it a
> legal Usenet post.
> 
> Solution to quiz #148.
> Thanks,
> 
> -Dave
> ---------- Forwarded message ---------- From: Dave Pederson
> <dave.pederson.ruby / gmail.com> Date: Nov 30, 2007 7:26 PM
> Subject: Ruby Quiz #148
> To: dave.pederson.ruby / gmail.com
> 
> 
> #!/usr/bin/env ruby
> 
> op = %w{ + - / * }
> pm = %w{ + - }
> 
> postfixes = ["2 3 5 + *",
>              "1 56 35 + 16 9 - / +",
>              "56 34 213.7 + * 678 -",
>              "5 9 * 8 7 4 6 + * 2 1 3 * + * + *"]
> 
> puts
> postfixes.each do |postfix|
>   stack = []
>   postfix.split.each do |c|
>     if op.include?(c)
>       second, first = stack.pop, stack.pop
>       if pm.include?(c)
>         stack.push "(#{first} #{c} #{second})"
>       else
>         stack.push "#{first} #{c} #{second}"
>       end
>     else
>       stack.push(c)
>     end
>   end
>   infix = stack.pop
>   if (infix[0] == 40 && infix[infix.size-1] == 41)
>     infix = infix[1, infix.size-2]
>   end
>   puts "postfix = #{postfix}"
>   puts "infix = #{infix}"
>   puts
> end

This is incorrect:

postfix = 3 5 * 5 8 * /
infix = 3 * 5 / 5 * 8

It should be
infix = 3 * 5 / (5 * 8)

--Ken

-- 
Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/