From: "Aaron D. Gifford" Date: 2011-09-07T08:52:12+09:00 Subject: Re: Grouping an array into sub-arrays. Just move things around a bit and you'll notice you've already got the behavior you want (or pretty close): irb(main):001:0> arr = [0,1,2,3,4] => [0, 1, 2, 3, 4] irb(main):002:0> [0..-2, -1].map{|i| arr[i]} => [[0, 1, 2, 3], 4] irb(main):003:0> [0, 2..3, 4..-1].map{|i| arr[i]} => [0, [2, 3], [4]] So just put the list of group selectors first, execute a map/collect on it and access the original array slices you want. Aaron out.