たけ(tk)です。

Yukihiro Matsumoto さん曰く。
》|String#prev が無いようです。そのうちにできるという可能性はありますか?。
》
》prevのアルゴリズムが定義できたらね。実際に考えてみると結構難しいんですよ。

  「次」は必ずあるけれど、「0」や「a」の前は「無い」ので例外生成という
こととか、「10」の前は「9」か「09」か、などですか?。

 それらしいのは出来るけれど、数字の桁下がりが厄介ですね。

 * ↓のでは 10→09 になる(9 になるべき)。また、00→9 、a0→9になっ
てしまう(例外を出すべき)。

class String
  def prev
    c = self[-1]
    case c
    when ?0
      return "" if self.size == 1
      return self.chop.prev+"9"
    when ?a
      return "" if self.size == 1
      return self.chop.prev+"z"
    when ?A
      return "" if self.size == 1
      return self.chop.prev+"Z"
    else
      s = self
      s[-1] = c-1
      return s
    end
  end
end

####

a="AAB"
(1..100).each{
  p a = a.prev
}


たけ(tk) ggb03124 / nifty.ne.jp
http://member.nifty.ne.jp/take_tk