Подтвердить что ты не робот

Разделить массив на n-группы размера m?

Возможный дубликат:
Нужно разделить массивы на субмассивы указанного размера в Ruby

Я хочу взять массив --- скажем, [0,5,3,8,21,7,2], например --- и создать массив массивов, разбитый на каждый так много мест. Если для указанного массива задано значение a, то

a.split_every(3)

вернет [[0,5,3], [8,21,7] [2]]

Это существует, или я должен сам его реализовать?

4b9b3361

Ответ 1

Используйте Enumerable#each_slice.

a.each_slice(3).to_a

Или, чтобы итератировать (и не беспокоиться о сохранении массива):

a.each_slice(3) do |x,y,z|
  p [x,y,z]
end

Ответ 2

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]]