如何:多位整数,将每个整数提取到单个整数数组中

How to: multiple-digit integer, extract each integer into an array of single integers

我正在进行一项取决于能否完成这项任务的练习。我必须取一个多位整数 >=0,即 830124,并制作一个由各个数字组成的数组。

我的想法是,我可以将它转换为字符串,在数组中为字符串编制索引,然后再转换回整数,但我还是有点迷茫。有什么建议吗?

你的直觉是正确的:

830124.to_s.each_char.map(&:to_i)
# => [ 8, 3, 0, 1, 2, 4 ]

这也很容易仅用数学就可以做到,这可能稍微快一点:

num = 830124
arr = []

while num > 0
  num, remainder = num.divmod(10)
  arr.unshift(remainder)
end

p arr
# => [ 8, 3, 0, 1, 2, 4 ]
n = 830124

n.to_s.split('').map(&:to_i)
  #=> [8, 3, 0, 1, 2, 4]

或者,不将字符转换为整数:

n.to_s.size.times.with_object([]) { |_,a| n,i = n.divmod(10); a.unshift(i) }
  #=> [8, 3, 0, 1, 2, 4]