|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
I've looked at a lot of solutions for this quiz today and I have to say
I like yours the most. Good work ![]() -- Posted via http://www.ruby-forum.com/. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Dec 2, 2007, at 9:17 PM, Michael Boutros wrote:
> I've looked at a lot of solutions for this quiz today and I have to > say > I like yours the most. Good work ![]() Since there was no name specified, I think all solvers should assume he was talking to you. ![]() James Edward Gray II |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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/ |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Note: parts of this message were removed by the gateway to make it a legal Usenet post.
Thanks for pointing that out. I was trying to minimize parentheses...looks like i kinda hurried though it. Anyways, here was my first solution (minus the bonus points): #!/usr/bin/env ruby op = %w{ + - * / } postfixes = ["2 3 5 + *", "1 56 35 + 16 9 - / +", "56 34 213.7 + * 678 -", "5 9 * 8 7 4 6 + * 2 1 3 * + * + *", "3 5 * 5 8 * /"] postfixes.each do |postfix| stack = [] postfix.split.each do |c| unless op.include? c stack.push(c) else second, first = stack.pop, stack.pop stack.push "( #{first} #{c} #{second} )" end end puts "postfix = #{postfix}" puts "infix = #{stack.pop}" puts end On Dec 2, 2007 8:40 PM, Ken Bloom <kbloom@gmail.com> wrote: > 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/ <http://www.iit.edu/%7Ekbloom1/> > > |
|
![]() |
| Outils de la discussion | |
|
|