On Jan 14, 2008, at 9:26 PM, James Gray wrote:

> Begin forwarded message:
>
>> From: "Brian Knoll" <brianeknoll / gmail.com>
>> Date: January 14, 2008 8:51:34 PM CST
>> To: suggestion / rubyquiz.com
>> Subject: Attempted solution. :)
>>
>> Hi, James,
>>
>> Thanks for doing Ruby Quiz -- it was very nice to have something to  > focus on, rather than inane training book examples (they try hard,  > they really do).
>>

Thanks for sending in a solution!

>> I was hoping to get some feedback, as this is one of my first Ruby  > programs (not copied from a book or website).

I've looked through the code a bit and have a suggestion:  see if you  an "DRY" the code up in places.  DRY stands for Don't Repeat Yourself  nd it reminds us that if we're typing something over and over again,  here's a better way.

A simple example would be the Scite workaround you are using to print  ontent immediately.  You have a lot of lines like:

   puts    STDOUT.flush

If we move that code into a method:

   def force_puts(*args)
     puts(*args)
     $stdout.flush
   end

we can use that from now on.

In this case though, Ruby has a variable to force flushing the  
output.  If you set it at the top of your script, you can omit all of  he calls to flush():

   $| = true

The biggest DRYing opportunity are the sections:

   if card_display == 1
     #    end

   # 
   if card_display == 2
     #    end

   # 
   if card_display == 3
     #    end

If you can condense those you can probably remove about 150 lines of  
code.  That makes it easier to read and maintain, so it's a big win.

Well, I hope that gives you some fresh ideas.

James Edward Gray II