def to_roman(num)
values = [
["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]
]
roman = ""
values.each do |set|
letter = set[0]
value = set[1]
roman += letter * (num / value)
num = num % value
end
return roman
end
我完全迷失在这里,并希望得到一些帮助 “roman + = letter”计数器做什么,为什么必须乘以num / value 为什么num除以值? 模数有什么作用?
答案 0 :(得分:3)
当您循环播放时,程序会检查您可以使用的最高罗马数字。当你离开时,例如345,下一个可能的最高数字是C
,应该重复300/100 = 3
次。那么数字就变成了#39; 45,由于模数,你重复得到40,然后是5,所以345是'翻译'致CCCXLV