From: Max Muermann Date: 2006-12-07T12:46:37+09:00 Subject: [GOLF]: partitioning an array Take an array of objects and partition it into subarrays, based on some arbitrary property of the objects. I would use this for example for generating a report of purchase orders and grouped by week, month, year, approximate value, etc. The idea is similar to Array#partition, but where partition only does a true/false check, the resulting array should be partitioned by the return value of a block so that: a = ['a','bc','def','g','hi','jkl','m'] group(a) {|i| i.size} #=> [["a", "g", "m"], ["bc", "hi"], ["def", "jkl"]] My best effort so far is this: def group array, &block h = {} array.each do |e| (h[yield(e)]||=[])<