```> Your task for this quiz, then, is to take a text as input and output the
> text in this fashion. Scramble each word's center (leaving the first and
> last letters of each word intact). Whitespace, punctuation, numbers --
> anything that isn't a word -- should also remain unchanged.

_________________________________________
solution one
_________________________________________

harp:~ > cat a.rb
class String
def scramble on = ''
re = %r/( (?:\b \w \w{2,} \w \b) | \s+ | . )/iox
scan(re){|words| on << words.first.scrambled}
on
end
def scrambled
self[1..-2] = self[1..-2].split(%r//).sort_by{rand}.to_s if size >= 4
self
end
end

harp:~ > ruby a.rb < a.rb
cslas Srntig
def srbcamle on = ''
re = %r/( (?:\b \w \w{2,} \w \b) | \s+ | . )/iox
sacn(re){|wrods| on << wodrs.fisrt.salbercmd}
on
end
def sclmaebrd
slef[1..-2] = slef[1..-2].split(%r//).s_botry{rnad}.t_os if size >= 4
slef
end
end

_________________________________________
solution two (golfing)
_________________________________________

harp:~ > ruby -npae 'gsub!(/\b(\w)(\w{2,})(\w)\b/){_=\$3;[\$1,\$2.split(//).sort_by{rand},_]}' a.rb
calss Snrtig
def sbcarlme on = ''
re = %r/( (?:\b \w \w{2,} \w \b) | \s+ | . )/iox
sacn(re){|wdros| on << wdros.first.slramcebd}
on
end
def smlcbaerd
self[1..-2] = slef[1..-2].siplt(%r//).srbt_oy{rand}.t_os if size >= 4
self
end
end

harp:~ > wc -c
gsub!(/\b(\w)(\w{2,})(\w)\b/){_=\$3;[\$1,\$2.split(//).sort_by{rand},_]}
70

thanks for the fun quiz!

-a
--
be kind whenever possible... it is always possible.
- h.h. the 14th dali lama

```