class Roman def initialize(value) if(value.to_i > 0) fromArabic(value) else fromRoman(value) end end def fromRoman(roman) @string = roman @value = 0 tryToRemoveArabic(10, 'x') tryToRemoveArabic(9, 'ix') tryToRemoveArabic(4, 'iv') tryToRemoveArabic(5, 'v') tryToRemoveArabic(1, 'i') end def tryToRemoveArabic(partValue, partSymbol) len = partSymbol.length while(@string[0,len] == partSymbol) @value += partValue @string.slice!(0,len) end end def fromArabic(arabic) @value = arabic @string = '' tryToRemoveRoman(100, 'c') tryToRemoveRoman(90, 'xc') tryToRemoveRoman(50, 'l') tryToRemoveRoman(40, 'xl') tryToRemoveRoman(10, 'x') tryToRemoveRoman(9, 'ix') tryToRemoveRoman(5, 'v') tryToRemoveRoman(4, 'iv') tryToRemoveRoman(1, 'i') end def tryToRemoveRoman(partValue, partSymbol) while(@value >= partValue) @string += partSymbol @value -= partValue end end def roman return @string end def value return @value end end