Я работаю над кодированием ката римскими цифрами, определенными здесь. Хотя я закончил его и не застрял, у меня есть вопрос, на который мне нужна помощь.
Вот где мой вопрос сидит:
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
Когда я запускаю divmod, говорю цифру 5, вот так
5.to_roman
Он возвращает V. И это имеет смысл, потому что
5.divmod(5) => 1, 0
Но как этот код выше не делает то же самое с
5.divmod(1) => 5, 0
Так как же он возвращает V, а не IIIIII, поскольку он просто добавляет ключ (I) раз (5). Каким-то образом он явно правильно возвращает V вместо IIIIII, но я не уверен, где эта логика. Любая помощь будет принята с благодарностью. Спасибо