Ruby中有什么优雅的方法可以将数字转换为数字数组
Is there any elegant method in Ruby to convert a number to an array of digits
n号我只能想到
array_of_digits = n.to_s.split('').map(&:to_i)
有没有更优雅的方法?
不是更优雅,而是更快:
def digits(n)
(0..Math.log10(n).to_i).map { |dp| n / 10 ** dp % 10 }.reverse
end
我刚找到的另一个快的(最快)
def digits(n)
n.to_s.each_byte.map { |x| x - 48 }
end
基准:
user system total real
Split map 0.410000 0.000000 0.410000 ( 0.412397)
chars 0.100000 0.010000 0.110000 ( 0.104450)
each byte 0.070000 0.000000 0.070000 ( 0.068171)
Numerical 0.100000 0.000000 0.100000 ( 0.101828)
基准测试的代码在这里,顺便说一句:https://gist.github.com/sid-code/9ad26dc4b509bfb86810
n号我只能想到
array_of_digits = n.to_s.split('').map(&:to_i)
有没有更优雅的方法?
不是更优雅,而是更快:
def digits(n)
(0..Math.log10(n).to_i).map { |dp| n / 10 ** dp % 10 }.reverse
end
我刚找到的另一个快的(最快)
def digits(n)
n.to_s.each_byte.map { |x| x - 48 }
end
基准:
user system total real
Split map 0.410000 0.000000 0.410000 ( 0.412397)
chars 0.100000 0.010000 0.110000 ( 0.104450)
each byte 0.070000 0.000000 0.070000 ( 0.068171)
Numerical 0.100000 0.000000 0.100000 ( 0.101828)
基准测试的代码在这里,顺便说一句:https://gist.github.com/sid-code/9ad26dc4b509bfb86810