我正在处理此处定义的编码 kata Roman Numerals 。虽然我已经完成并且没有被卡住,但我确实有一个问题需要帮助回答。
这是我的问题所在:
class Fixnum
NUMERALS = [
['V', 5], ['IV', 4], ['I', 1]
]
def to_roman
roman = ""
number = self
for key, value in NUMERALS
count, number = number.divmod(value)
roman << (key * count)
end
roman
end
end
当我对数字 5 执行 divmod 时,就像这样
5.to_roman
它返回 V。这是有道理的,因为
5.divmod(5) => 1, 0
但是上面的代码如何与
5.divmod(1) => 5, 0
那么它如何返回 V 而不是 IIIIII,因为它只是将键 (I) 与计数 (5) 相加。不知何故,它显然正确地返回了 V 而不是 IIIIII,但我不确定该逻辑在哪里。任何帮助将不胜感激。谢谢