昨日、Chris Pine の本「Learn to Program」の演習 (9.5) を完了しました。これは整数から古い学校のローマ数字へのコンバーターです。
これが私がやった方法です:
def old_roman_numeral number
roman_number = ""
while number != 0
if number % 1000 == 0
number -= 1000
roman_number += "M"
next
elsif number % 500 == 0
number -= 500
roman_number += "D"
next
elsif number % 100 == 0
number -= 100
roman_number += "C"
next
elsif number % 50 == 0
number -= 50
roman_number += "L"
next
elsif number % 10 == 0
number -= 10
roman_number += "X"
next
elsif number % 5 == 0
number -= 5
roman_number += "V"
next
else
number -= 1
roman_number += "I"
end
end
roman_number.reverse
end
puts "Please enter any number and I convert it to"
puts "Old-school Roman numerals."
puts
num = gets.chomp.to_i
puts "Your number #{num} converted to Old-school Roman is:"
puts (old_roman_numeral num)
スクリプトを実行すると、正しいローマ数字が出力されます。
たとえば、1200 => MCC
でも、今日目が覚めたとき、最初に思ったのは、これは正しくない! 1200 % 1000 の余りは 200 であり、0 ではありません! しかし、なぜ出力MCCであり、CCCCCCCCCCCCではないのですか???