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

时间:2015-11-30 04:58:00

标签: arrays ruby sorting integer-arithmetic

我正在进行一项能够完成这项任务的练习。我必须取一个多位整数> = 0,即830124,然后创建各个数字的数组。

我的想法是,我可以将它转换为字符串,索引数组中的字符串,然后转换回int,但我仍然有点丢失。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你的直觉是正确的:

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 ]

答案 1 :(得分:2)

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

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

// An example document with spatial data
public class MyDocument 
{
    public string Id { get; set; }
    public Microsoft.Azure.Documents.Spatial.Point Location { get; set; }
}

// An example distance query - get all documents within 30 km of a given point
client.CreateDocumentQuery<MyDocument>(collection.SelfLink)
    .Where(x => x.Location.Distance(new Point(32.33, -4.66)) < 30000))