Ruby on rails 比每个_切片更平衡的数组操作?

Ruby on rails 比每个_切片更平衡的数组操作?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个由10个项目组成的数组,我想将其分成3个部分,如下所示: [1, 2, 3, 4] [5, 6, 7] [8, 9, 10] 使用每个\u切片我可以接近: a = *(1..10) a.each_slice(4) # use 4 so I can fit everything into 3 sections [1, 2, 3, 4] [5, 6, 7, 8] [9, 10] 但是我想要第一种更均匀分布的格式。我可以写我自己的方法。但是在ruby 1.9+中是否有一种内置的方法可以做

我有一个由10个项目组成的数组,我想将其分成3个部分,如下所示:

[1, 2, 3, 4]
[5, 6, 7]
[8, 9, 10]
使用
每个\u切片
我可以接近:

a = *(1..10)
a.each_slice(4) # use 4 so I can fit everything into 3 sections

[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10]
但是我想要第一种更均匀分布的格式。我可以写我自己的方法。但是在ruby 1.9+中是否有一种内置的方法可以做到这一点

更新:


由于没有内置的方式,我想将我的问题改为-如何实现它?以下是我的实现

  def chunk(a, pieces)
     size = a.size / pieces
     extra = a.size % pieces
     chunks = []
     start = 0

     1.upto(pieces) do |i|
       last = (i <= extra) ? size.next : size
       chunks << a.slice(start, last)
       start = chunks.flatten.size
     end

     chunks
   end
将输出

[1, 2, 3, 4]
[5, 6, 7]
[8, 9, 10]
[[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [], [], [], []]
如果工件尺寸太大,则用空阵列填充

a = *(1..10)
puts chunk(a, 14)
将输出

[1, 2, 3, 4]
[5, 6, 7]
[8, 9, 10]
[[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [], [], [], []]

你到底想干什么?将你的
(1..10)
切成三个几乎相等的部分,同时保持整体秩序?如前所述,a.每个部分(3)不,没有这样的内置方法。我很想看到你的实现。