Hatena::Grouprubyist

たばさの RSSフィード

01/11(水) 2012

適度にミスタイプする

適度にミスタイプする - たばさの を含むブックマーク はてなブックマーク - 適度にミスタイプする - たばさの

class String
  def getpos s=self.size
    rand(s)
  end
  def wrongone n=1
    pos=getpos
    res=self.dup
    res[pos]=res[pos]+1
    puts pos if $DEBUG
    res
  end
  def getposx
    r=self
    pos1=getpos(r.size-1)
    pos1=getpos(r.size-1) until not r[pos1]==r[pos1+1]
    pos2=pos1+1
    [pos1,pos2]
  end
  def trrt
    r=self.dup
    pos1,pos2=getposx
    tmp=r[pos2]
    r[pos2]=r[pos1]
    r[pos1]=tmp
    r
  end
  def wxy
    u=self.dup
    (rand(2)+1).times{u=u.wrongone}
    u
  end
  def wrr
    u=self.dup
    pos=getpos
    if pos==0
      u=u[pos..pos]+u[pos..-1]
    else
      u=u[0..pos-1]+u[pos..pos]+u[pos..-1]
    end
    u
  end
  def wg
    u=self.dup
    pos=getpos(u.size-1)
    if pos==0
      u[pos+1..-1]
    else
      u[0..pos-1]+u[pos+1..-1]
    end
  end
  def wrongrand
    case rand(2)
    when 0
      wrr
    when 1
      rand>0.5 ? trrt : rand>0.5 ? wg : wxy
    end
  end
  def wrong
    r=self.dup
    r=r.wrongrand
    r= rand>0.5 ? r : r.wrongrand
    (r= rand>0.5 ? r : r.wrongrand) while r==self
    r
  end
  def wrongpercent c
    rand(100)<c ? wrong : self
  end
end

if __FILE__ == $0
  str=ARGV[0] || "qwertyuiop"
  cent=ARGV[1] || 50
  cent=cent.to_i
  n=1000
  n.times{|i|puts "#{i} #{str.wrongpercent(cent)}"}
end
トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20120111
カレンダー
<< 2012/01 >>
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 31
archive Error : RSSが取得できませんでした。