ruby 如何将Roman转换为Ruby中的任何数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 如何将Roman转换为Ruby中的任何数字相关的知识,希望对你有一定的参考价值。
# Define method
def romanize(num)
# define values with hash
digits = {
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"
}
# Check
digits.reduce("") do |acc, digit|
key, numeral = digit
occurances, num = num.divmod(key)
acc + (numeral * occurances)
end
end
romanize 199
## Refactored version
@digits = {
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"
}
def romanize(num)
@digits.keys.each_with_object('') do |key, str|
nbr, num = num.divmod(key)
str << @digits[key]*nbr
end
end
romanize(888) # => "DCCCLXXXVIII"
#romanize(999) # => "CMXCIX"
## Another imrovement using recursion
def romanize(num, str='')
return str if num == 0
key = @digits.keys.find { |k| k <= num }
str << @digits[key]
romanize(num-key, str)
end
romanize(888) # => "DCCCLXXXVIII"
romanize(999) # => "CMXCIX"
以上是关于ruby 如何将Roman转换为Ruby中的任何数字的主要内容,如果未能解决你的问题,请参考以下文章
如何将此时间整数转换为 Ruby 中的日期? [复制]
如何将 UTF8 组合字符转换为 ruby 中的单个 UTF8 字符?
如何使用 jira-ruby gem 将转换更改为 ruby 中的问题?
Ruby中的HTML页面到PDF转换器? [关闭]
如何将 JSON 转换为 Ruby 哈希
如何表示将 ruby 哈希转换为 yaml 的 aws 内部函数