Please Forward: Ruby Quiz Submission

From: Carl Porth <badcarl@gmail.com>
Date: February 11, 2007 1:48:08 PM CST
To: submission@rubyquiz.com
Subject: Please Forward: Ruby Quiz Submission

Here are my solutions.

* Given a Numeric, provide a String representation with commas inserted between each set of three digits in front of the decimal.
quiz.to_s.reverse.scan(/(?:\d*\.)?\d{1,3}-?/).join(',').reverse

* Given a nested Array of Arrays, perform a flatten()-like operation that removes only the top level of nesting.
quiz.inject() { |mem, var| var.is_a?(Array) ? mem+var : mem+[var] }

* Shuffle the contents of a provided Array.
quiz.sort{rand}

* Given a Ruby class name in String form, fetch the actual class object.
eval quiz

* Insert newlines into a paragraph of prose (provided in a String) so lines will wrap at 40 characters.
quiz.scan(/(.{1,40})(?:\s+|$)/m).join("\n")

* Given an Array of String words, build an Array of only those words that are anagrams of the first word in the Array.
word = quiz.shift.split('').sort; quiz.select { |e| e.split('').sort == word }

* Convert a ThinkGeek t-shirt slogan (in String form) into a binary representation (still a String).
quiz.gsub(/\S/) { |l| l.unpack('U')[0].to_s(2) }.gsub(' ', "\n")

* Provided with an open File object, select a random line of content.
quiz.readlines.sort{rand}.first

* Given a wondrous number Integer, produce the sequence (in an Array).
q=[n=quiz]; q << (n = n%2 == 0 ? n/2 : 3*n+1) until n==1; q

* Convert an Array of objects to nested Hashes...
quiz.reverse.inject { |mem, var| {var => mem} }

ยทยทยท

Begin forwarded message: