group

フラットな配列を指定の数ずつまとめる.

たまにあったら便利なのにと思いつつ,必要になるたびに手書きしてる.
すでに標準であったりして.

class Array
  def group(n=2)
    return [] if empty?
    if false and (size % n != 0)
      puts "error in group #{size}%#{n}=#{size%n}"
      return nil
    end
    ret = []
    0.upto(size/n-1) {|x| ret << self[x*n,n]}
    ret
  end
end
p [1,2].group(2)		# => [[1, 2]]
p [1,2,3,4,5,6].group	# => [[1, 2], [3, 4], [5, 6]]
p (1..6).to_a.group(3)	# => [[1, 2, 3], [4, 5, 6]]
p (1..5).to_a.group(3)	# => [[1, 2, 3]]