Skip to content

Instantly share code, notes, and snippets.

@ksin
Created August 5, 2015 01:33
Show Gist options
  • Save ksin/c39a842a23c996ad6145 to your computer and use it in GitHub Desktop.
Save ksin/c39a842a23c996ad6145 to your computer and use it in GitHub Desktop.
module Roman
MAP = {
1000 => "M",
900 => "CM",
500 => "D",
400 => "CD",
100 => "C",
90 => "XC",
50 => "L",
40 => "XL",
10 => "X",
9 => "IX",
5 => "V",
4 => "IV",
1 => "I",
}.freeze
def self.to_roman(num)
output = ""
while num > 0
MAP.each do |n, roman|
if n <= num
num -= n
output << roman
break
end
end
end
output
end
end
# Drive code... this should print out trues.
puts Roman::to_roman(1) == "I"
puts Roman::to_roman(3) == "III"
puts Roman::to_roman(6) == "VI"
puts Roman::to_roman(9) == "IX"
puts Roman::to_roman(14) == "XIV"
puts Roman::to_roman(44) == "XLIV"
puts Roman::to_roman(944) == "CMXLIV"
puts Roman::to_roman(1999) == "MCMXCIX"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment