(Not sure how best to post my solution, so I'm just replying to 
Florian's message...figured it might be nice to keep the solutions all 
in the same thread, at least...)

I agree with Florian, it was a great quiz. I'm looking forward to the 
next one, too!

My solution is posted here:

   http://www.jamisbuck.org/ruby-quiz-01-jamis-buck.zip

I did it using Copland, both to demonstrate Copland, and to "test" 
Copland (to see if I ran into anything that needed fixing or adding). 
Although the assignment itself was really too small for IoC, it was 
still fun. I just ended up with many tiny classes. :)

I implemented a few other keying algorithms: shuffle (which shuffles the 
deck according to a given seed value) and reverse (which just reverses 
the order of an unkeyed deck).

-- 
Jamis Buck
jgb3 / email.byu.edu
http://www.jamisbuck.org/jamis