This post originated from an RSS feed registered with Ruby Buzz
by Joey Gibson.
Original Post: Mixer Remixed
Feed Title: Joey Gibson's Blog
Feed URL: http://www.jobkabob.com/index.html
Feed Description: Thoughts, musings, ramblings and rants on Java, Ruby, Python, obscure languages, politics and other exciting topics.
After reading several threads about the text
scrmabler and various implementations, I revised my Ruby version and it's now 21 lines
shorter and much more Ruby-like. It makes far less of an
attempt to deal with punctuation, but I think that's OK. This
is just a lark, after all.
1 class Mixer
2 private
3 def randomize(str)
4 return str if str.length < 4
5
6 str =~ /\B.*\B/
7 first = $`
8 last = $'
9 first + ($&.split(//).sort_by {rand}.join) + last
10 end
11
12 public
13 def mix_file(filename)
14 lines = IO.readlines(filename)
15
16 mix_lines(lines)
17 end
18
19 def mix_string(str)
20 mix_lines(str.split).join(" ")
21 end
&l
1000
t;font color="#804040">22
23 def mix_lines(lines)
24 lines.collect! do |line|
25 words = Array.new
26
27 line.split(/\W/).each do |word|
28 words << randomize(word)
29 end
30
31 words.join(" ")
32 end
33 end
34 end