2010/6/8 Juan Matias <jmrepetti / gmail.com>: > glen wrote: >> Just thought I'd post a solution I came up with to finding >> combinations (as in, permutations and combinations) of arrays. For >> example, combining: >> >> [1,2] and [3,4,5] >> >> should return: >> >> [[1,3],[1,4],[1,5],[2,3],[2,4],[2,5]] >> >> which is easy enough. But I wanted something that combine several >> arrays at once, ie: >> >> [[1,2],[3,4,5],[6,7]].combine >> => [[1, 3, 6], [1, 3, 7], [1, 4, 6], [1, 4, 7], [1, 5, 6], [1, 5, 7], >> [2, 3, 6], [2, 3, 7], [2, 4, 6], [2, 4, 7], [2, 5, 6], [2, 5, 7]] >> > > And why not something like: > > ¨Â±¬²Ý®ãïíâéîå¨Û³¬´Ý©®ãïíâéîå¨Ûµ¬¶¬·Ý© > > I do that with this code: > > class Array > ¨Âåæ ãïíâéîå¨ïôèåòÁòòáù> ¨Âõø ÛÝ > ¨Âåìæ®åáãè äï üóåìæßåìåí> ¨ÂôèåòÁòòáù®åáãè äï üïôèåòßåìåíü > ¨Âõø ¼¼ Ûóåìæßåìåí¬ïôèåòßåìåíÝ > ¨Âîä > ¨Âîä > ¨Âõø®íáð ûüåìåíåìåí®æìáôôåî > ¨Âîä > end I'd rather do this: module Enumerable def combine(enum) if block_given? each do |*a| enum.each do |*b| yield *a, *b end end self else enum_for(:combine, enum) end end end [1,2].combine([3,4]) do |*a| p a end puts "--------------" [1,2].combine([3,4]).each do |*a| p a end puts "--------------" [1,2].combine([3,4]).combine([5,6]) do |*a| p a end puts "--------------" [1,2].combine([3,4]).combine([5,6]).each do |*a| p a end Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/