Class: Integer
- Inherits:
-
Object
- Object
- Integer
- Defined in:
- src/ruby/include/hack.rb
Overview
Constant Summary collapse
- @@values =
{ 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" }
Instance Method Summary collapse
- #next_lower_key(integer) ⇒ Object
- #to_roman ⇒ Object
-
#to_roman_descending ⇒ Object
this one requires numeral-arabic pairs in descending order, i.e.
Instance Method Details
#next_lower_key(integer) ⇒ Object
52 53 54 55 56 |
# File 'src/ruby/include/hack.rb', line 52 def next_lower_key(integer) arabics = @@values.keys next_lower_index = (arabics.push(integer).sort.index(integer))-1 arabics[next_lower_index] end |
#to_roman ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'src/ruby/include/hack.rb', line 37 def to_roman integer = self roman = "" while integer > 0 if @@values[integer] roman += @@values[integer] return roman end roman += @@values[next_lower_key(integer)] # increment the roman numeral string here integer -= next_lower_key(integer) # decrement the arabic integer here end end |
#to_roman_descending ⇒ Object
this one requires numeral-arabic pairs in descending order, i.e. 1000=>“M” on down
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'src/ruby/include/hack.rb', line 23 def to_roman_descending #this one requires numeral-arabic pairs in descending order, i.e. 1000=>"M" on down return 0 if self == 0 roman = "" integer = self @@values.each do |k,v| until integer < k roman << v integer -= k end end roman end |