```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/

```