続: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
あってるっぽい?