Advertisement
Zetu

Roman Numeral Converter

Jul 11th, 2011
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.90 KB | None | 0 0
  1. module Z
  2.   ROMAN = {
  3.        1  => "I",
  4.        5  => "V",
  5.       10  => "X",
  6.       50  => "L",
  7.      100  => "C",
  8.      500  => "D",
  9.     1000  => "M",
  10.     5000  => "",
  11.    10000  => ""
  12.   }
  13. end
  14. class Integer
  15.  
  16.   def to_roman
  17.     value = self
  18.     if value < 4000
  19.       base = ""
  20.       for key in Z::ROMAN.keys.sort.reverse
  21.         a = value / key
  22.         case a
  23.         when 0; next
  24.         when 1, 2, 3
  25.           base += Z::ROMAN[key]*a
  26.         when 4
  27.           base += Z::ROMAN[key]
  28.           base += Z::ROMAN[key*5]
  29.         when 5, 6, 7, 8
  30.           base += Z::ROMAN[key*5]
  31.           base += Z::ROMAN[key]*a-5
  32.         when 9
  33.           base += Z::ROMAN[key*10]
  34.           base += Z::ROMAN[key]
  35.         end
  36.         value -= a * key
  37.       end
  38.       return base
  39.     else
  40.       return "---"
  41.     end
  42.   end
  43.  
  44. end
  45.  
  46. print 3000.to_roman
  47. print 252.to_roman
  48. print 99.to_roman
  49. print 44.to_roman
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement