Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Z
- ROMAN = {
- 1 => "I",
- 5 => "V",
- 10 => "X",
- 50 => "L",
- 100 => "C",
- 500 => "D",
- 1000 => "M",
- 5000 => "",
- 10000 => ""
- }
- end
- class Integer
- def to_roman
- value = self
- if value < 4000
- base = ""
- for key in Z::ROMAN.keys.sort.reverse
- a = value / key
- case a
- when 0; next
- when 1, 2, 3
- base += Z::ROMAN[key]*a
- when 4
- base += Z::ROMAN[key]
- base += Z::ROMAN[key*5]
- when 5, 6, 7, 8
- base += Z::ROMAN[key*5]
- base += Z::ROMAN[key]*a-5
- when 9
- base += Z::ROMAN[key*10]
- base += Z::ROMAN[key]
- end
- value -= a * key
- end
- return base
- else
- return "---"
- end
- end
- end
- print 3000.to_roman
- print 252.to_roman
- print 99.to_roman
- print 44.to_roman
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement