Skip to content

Instantly share code, notes, and snippets.

@gbrl
Created April 27, 2016 21:41
Show Gist options
  • Save gbrl/94037e0230d40da62968c64a5718c2ae to your computer and use it in GitHub Desktop.
Save gbrl/94037e0230d40da62968c64a5718c2ae to your computer and use it in GitHub Desktop.
require 'pp'
# I = 1
# V = 5
# X = 10
# L = 50
# C = 100
# D = 500
# M = 1000
# 490 = CDXC
def to_roman(number,roman)
puts "SORRY! Your number is too big! Less than 5000 please!" if number > 4999
roman_numerals = []
puts "Our number is #{number}."
#puts "In roman numberals, this is #{roman}"
thousand_symbols = (number / 1000)
#puts "We have #{thousand_symbols} thousand_symbols"
thousand_symbols.times do |m|
roman_numerals << "M"
end
number = number - (thousand_symbols * 1000)
#puts "Our number is now #{number}."
five_hundred_symbols = (number / 500)
#puts "We have #{five_hundred_symbols} five_hundred_symbols"
five_hundred_symbols.times do |m|
roman_numerals << "D"
end
number = number - (five_hundred_symbols * 500)
#puts "Our number is now #{number}."
hundred_symbols = (number / 100)
#puts "We have #{hundred_symbols} hundred_symbols"
hundred_symbols.times do |m|
roman_numerals << "C"
end
number = number - (hundred_symbols * 100)
#puts "Our number is now #{number}."
fifty_symbols = (number / 50)
#puts "We have #{fifty_symbols} fifty_symbols"
fifty_symbols.times do |m|
roman_numerals << "L"
end
number = number - (fifty_symbols * 50)
#puts "Our number is now #{number}."
ten_symbols = (number / 10)
#puts "We have #{ten_symbols} ten_symbols"
ten_symbols.times do |m|
roman_numerals << "X"
end
number = number - (ten_symbols * 10)
#puts "Our number is now #{number}."
five_symbols = (number / 5)
#puts "We have #{five_symbols} five_symbols"
five_symbols.times do |m|
roman_numerals << "V"
end
number = number - (five_symbols * 5)
#puts "Our number is now #{number}."
one_symbols = number
#puts "We have #{one_symbols} one_symbols"
one_symbols.times do |m|
roman_numerals << "I"
end
number = number - (one_symbols)
#puts "Our number is now #{number}."
roman_numerals.join("")
end
pp to_roman(2,"")
pp "**********************************************************"
pp to_roman(24,"")
pp "**********************************************************"
pp to_roman(246,"")
pp "**********************************************************"
pp to_roman(2469,"")
pp "**********************************************************"
pp to_roman(4999,"")
pp "**********************************************************"
pp to_roman(5000,"")
pp "**********************************************************"
pp to_roman(1888,"")
pp "**********************************************************"
pp to_roman(9,"")
pp "**********************************************************"
pp to_roman(4,"")
require 'pp'
# I = 1
# V = 5
# X = 10
# L = 50
# C = 100
# D = 500
# M = 1000
# 490 = CDXC
def to_roman(number,answer)
puts "SORRY! Your number is too big! Less than 5000 please!" if number > 4999
puts "Number is #{number}"
rosetta = {
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",
}
output = ""
rosetta.each do |value,numeral|
while (number > (value-1)) do
number -= value
output << numeral
end
end
puts "Output is #{output}."
end
puts to_roman(2389, "")
puts "****************************************"
puts to_roman(95, "")
puts "****************************************"
puts to_roman(1110, "")
puts "****************************************"
puts to_roman(6410, "")
puts "****************************************"
puts to_roman(9810, "")
puts "****************************************"
puts to_roman(321, "")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment