Ответ 1
Используйте Enumerable#each_slice
.
a.each_slice(3).to_a
Или, чтобы итератировать (и не беспокоиться о сохранении массива):
a.each_slice(3) do |x,y,z|
p [x,y,z]
end
Возможный дубликат:
Нужно разделить массивы на субмассивы указанного размера в Ruby
Я хочу взять массив --- скажем, [0,5,3,8,21,7,2], например --- и создать массив массивов, разбитый на каждый так много мест. Если для указанного массива задано значение a, то
a.split_every(3)
вернет [[0,5,3], [8,21,7] [2]]
Это существует, или я должен сам его реализовать?
Используйте Enumerable#each_slice
.
a.each_slice(3).to_a
Или, чтобы итератировать (и не беспокоиться о сохранении массива):
a.each_slice(3) do |x,y,z|
p [x,y,z]
end
a = (1..6).to_a
a.each_slice(2).to_a # => [[1, 2], [3, 4], [5, 6]]
a.each_slice(3).to_a # => [[1, 2, 3], [4, 5, 6]]
a.each_slice(4).to_a # => [[1, 2, 3, 4], [5, 6]]