続:Rubyで数字をローマ数字で表示

よく見たら、delete_ifなんてメソッドで消しちゃったほうが楽なことに気づいた。
ついでにハッシュを外に出してシンプルに。

class Integer
 RomaTbl = {1 => 'I', 4 => 'IV', 5 => 'V', 9=> 'IX', 10 =>  'X',
  40 => 'XL', 50 => 'L', 90 => 'XC', 100 => 'C', 400 => 'CD',
  500 => 'D', 900=> 'CM', 1000 => 'M'}

 def roman(s=self)
  return "-" if 3999 < s || 0 >= s
  k = RomaTbl.keys.delete_if{|x| x > s}.sort[-1]
  return RomaTbl[k] + roman(s - k).gsub('-','')
 end
end

あってるっぽい?