From: James Edward Gray II Date: 2006-04-24T04:48:30+09:00 Subject: Fwd: Please Forward: Ruby Quiz Submission Begin forwarded message: > From: Hew Wolff > 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