From: Felix Windt [mailto:fwmailinglists / gmail.com] # irb(main):002:0> b = [[], [], []] # => [[], [], []] # irb(main):003:0> a.inject(0){|bucket, item| b[bucket] << # item; bucket < 2 ? bucket + 1 : 0} # => 0 # irb(main):004:0> b # => [[1, 4, 7], [2, 5, 8], [3, 6, 9]] # # Though I don't know if that would be considered elegant. i would consider that as simple and elegant. btw, in 1.9 there will be group_by and a with_index, so hopefully, a.group_by.with_index{|_,i| i%3}.values =>[[1, 4, 7], [2, 5, 8], [3, 6, 9]] kind regards -botp