Please Forward: Ruby Quiz Submission

From: Hew Wolff <hewwolff@sonic.net>
Date: April 21, 2006 6:52:03 PM CDT
To: submission@rubyquiz.com
Subject: Please Forward: Ruby Quiz Submission

I read the newsgroup, whose connection to the mailing list appears to be broken. Thanks for the puzzle...

Hew Wolff
http://www.hewwolff.org

----

class String
  # Shuffle characters, leaving first and last the same.
  def shuffleMiddle!
    # Swap a random character into last place, then next to last...
    (length - 2).downto(1) do |i|
       j = rand(i) + 1
       self[i], self[j] = self[j], self[i]
    end
    self
  end

  def shuffleWords
    scan(/([^a-zA-Z]*)([a-zA-Z]*)/).collect do |punctuation, word|
       punctuation + word.shuffleMiddle!
    end.join
  end
end

text = "They say never apologize, never explain, and I can't disagree."
puts text.shuffleWords

···

Begin forwarded message: