From: Phrogz Date: 2006-11-06T12:55:08+09:00 Subject: Re: array sorting question Giles Bowkett wrote: > I have an array of arrays. the interior arrays can be of any arbitrary > length including zero. I want to sort the array of arrays in such a > way that the interior arrays with the most elements are closest to the > middle of the main array. main = (-4..12).map{ |i| (0..i).to_a } sorted = main.sort_by{ |sub| sub.length } i = 0 half1, half2 = sorted.partition{ (i+=1) % 2 == 0 } pyramid = half1 + half2.reverse require 'pp' pp pyramid #=> [[], #=> [], #=> [0, 1], #=> [0, 1, 2, 3], #=> [0, 1, 2, 3, 4, 5], #=> [0, 1, 2, 3, 4, 5, 6, 7], #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], #=> [0, 1, 2, 3, 4, 5, 6, 7, 8], #=> [0, 1, 2, 3, 4, 5, 6], #=> [0, 1, 2, 3, 4], #=> [0, 1, 2], #=> [0], #=> [], #=> []]