From: dblack@... Date: 2007-07-10T21:26:47+09:00 Subject: Re: Repacking an array of arrays Hi -- On Tue, 10 Jul 2007, Robert Klemme wrote: > 2007/7/10, Kaps Lok : >> Is there an elegant (maybe a one-liner) for repacking: >> >> [[1, 4, 7, 10, 13], [2, 5, 8, 11, 14], [3, 6, 9, 12, 15]] >> >> to? >> >> [[1, 4, 7], [10, 13, 2], [5, 8, 11], [14, 3, 6], [9, 12, 15]] >> >> So rather than having 3 arrays each with 5 elements, I get five arrays >> of 3 elements each... >> >> the only way I can see to do this is by looping the array, and creating >> new arrays. > > Try this: > > require 'enumerator' > p [[1, 4, 7, 10, 13], [2, 5, 8, 11, 14], [3, 6, 9, 12, > 15]].flatten.to_enum(:each_slice, 3).to_a And in 1.9 I guess it would be: array.flatten.each_slice(3).to_a I'd like to see a method (I don't think there is one) in 1.9 that would return the sliced-up array without the need for the explict to_a operation. I suspect the most common use will be exactly that. David -- * Books: RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242) RUBY FOR RAILS (http://www.manning.com/black) * Ruby/Rails training & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)