classArraydefrandom_elementself[ rand( self.size ) ]
endenddefout str, sleeptime=0$stdout.print str
$stdout.flush
sleep sleeptime unless sleeptime.zero?end
text =ARGV.join(" ") +" "
so_far =""
text.size.timesdo |i|
lower =?\s
upper =?\zloopdo
b = text[ i ]
c = [*lower..upper].random_element
out c.chr, 0.1
out "\010"
lower = c if c < b
upper = c if c > b
nextunless c == b
out "\010"* so_far.size
out so_far
so_far << c.chrbreakendend