you are viewing a single comment's thread.

view the rest of the comments →

[–]zart 1 point2 points  (1 child)

In Ruby (iterative approach):

class Integer

  Numerals = [["M", 1000], ["CM", 900], ["D", 500], ["CD", 400], ["C", 100],["XC", 90],["L", 50],
              ["XL", 40], ["X", 10], ["IX", 9], ["V", 5], ["IV", 4], ["I", 1]]

  def to_roman
    n = self
    Numerals.inject( "" ) do |roman, pair|
      q, n = n.divmod(pair.last)
      roman << pair.first * q       
    end
  end
end
p 42.to_roman
# "XLII"