From: Peter Date: 2003-09-18T01:28:49+09:00 Subject: Re: scrambler one-liner > def reorder(str) > result = [] > while str.length > 0 > result << str.delete_at(rand(str.length)) > end > result > end > > def scramble(str) > str.gsub!(/\B\w+\B/){reorder($&.split(//)).join} > end Here's a one-liner after all: gsub!(/\B\w+\B/){proc{|s|Array.new(s.length){s.delete_at(rand(s.length))}}.call($&.split(//)).join} It's longer for sure, but now you're sure the result is really random (provided you believe me it is ;-) Peter