Ruby on rails 比每个_切片更平衡的数组操作?
我有一个由10个项目组成的数组,我想将其分成3个部分,如下所示: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+中是否有一种内置的方法可以做
[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)不,没有这样的内置方法。我很想看到你的实现。