如何:多位整数,将每个整数提取到单个整数数组中
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]
我正在进行一项取决于能否完成这项任务的练习。我必须取一个多位整数 >=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]