Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Array
  def random_element
    self[ rand( self.size ) ]
  end
end
def out str, sleeptime=0
  $stdout.print str
  $stdout.flush
  sleep sleeptime unless sleeptime.zero?
end

text = ARGV.join(" ") + " "
so_far = ""
text.size.times do |i|
  lower = ?\s
  upper = ?\z
  loop do  
    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
    next unless c == b
    out "\010" * so_far.size
    out so_far
    so_far << c.chr
    break
  end
end