Module: Nuggets::Integer::RomanMixin
- Included in:
- Integer
- Defined in:
- lib/nuggets/integer/roman_mixin.rb
Constant Summary collapse
- NUMERAL =
{ 1000 => 'M', 500 => 'D', 100 => 'C', 50 => 'L', 10 => 'X', 5 => 'V', 1 => 'I' }
- COMPACT =
NUMERAL.values.each_cons(3).to_a.values_at(0, 2, 4).flat_map { |*a, b| a.push(nil).each_cons(2).map { |x, y| [/#{y}#{b}{4}/, "#{b}#{x}"] } }
Class Method Summary collapse
-
.to_roman(int, num = '') ⇒ Object
call-seq: to_roman(int) => aString.
Instance Method Summary collapse
-
#to_roman ⇒ Object
call-seq: int.to_roman => aString.
Class Method Details
.to_roman(int, num = '') ⇒ Object
call-seq:
to_roman(int) => aString
Converts positive integer int to Roman numerals.
49 50 51 52 53 54 55 56 57 |
# File 'lib/nuggets/integer/roman_mixin.rb', line 49 def self.to_roman(int, num = '') NUMERAL.each { |key, val| until int < key; int -= key; num << val; end } COMPACT.each { |key, val| num.gsub!(key, val) } num end |
Instance Method Details
#to_roman ⇒ Object
call-seq:
int.to_roman => aString
Converts int to Roman numerals.
63 64 65 66 |
# File 'lib/nuggets/integer/roman_mixin.rb', line 63 def to_roman self == 0 ? 'N' : self < 0 ? RomanMixin.to_roman(-self, '-') : RomanMixin.to_roman(self) end |