# Cmbinations in Array

**URL:** <https://www.ruby-forum.com/t/cmbinations-in-array/142346>\
**Category:** Rails\
**Created:** [July 7, 2008, 5:57am UTC](https://www.ruby-forum.com/t/cmbinations-in-array/142346 "2008-07-07T05:57:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ganana\_srishti](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e480ec/32.png) [@ganana\_srishti](https://www.ruby-forum.com/u/ganana_srishti)\
**Post date:** [July 7, 2008, 5:57am UTC](https://www.ruby-forum.com/t/cmbinations-in-array/142346/1 "2008-07-07T05:57:51Z")

</div>

Hi,  
I want to find the combination of array elements

like for example  
a = [1,2,3,4]  
the combinations are  
[1,2,3,4]  
[1,3,4,2]  
[1,2,3]  
etc…

If anybody knows plz reply me

---

<div class="post-metadata">

**Author:** ![ganana\_srishti](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e480ec/32.png) [@ganana\_srishti](https://www.ruby-forum.com/u/ganana_srishti)\
**Post date:** [July 7, 2008, 5:59pm UTC](https://www.ruby-forum.com/t/cmbinations-in-array/142346/2 "2008-07-07T17:59:56Z")

</div>

Do you want to know the number of possible combinations or the  
combinations themselves?

On Jul 6, 11:57 pm, “Pragash Mr.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![ganana\_srishti](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e480ec/32.png) [@ganana\_srishti](https://www.ruby-forum.com/u/ganana_srishti)\
**Post date:** [July 7, 2008, 6:27pm UTC](https://www.ruby-forum.com/t/cmbinations-in-array/142346/3 "2008-07-07T18:27:07Z")

</div>

Pragash Mr. wrote:

> Hi,  
> I want to find the combination of array elements
> 
> like for example  
> a = [1,2,3,4]  
> the combinations are  
> [1,2,3,4]  
> [1,3,4,2]  
> [1,2,3]  
> etc…
> 
> If anybody knows plz reply me

Think this works,

def combinations(array)  
return [] if array == []  
return [array, []] if array.length == 1

# split [1,2,3] =\> [1], [2,3]

left, right = array[0…0], array[1…-1]  
rtn = []

combinations(right).each do |r\_array|  
rtn \<\< r\_array  
rtn \<\< left + r\_array  
end

return rtn  
end

> > combinations([1])  
> > =\> [[1]]  
> > combinations([1])  
> > =\> [[1], []]  
> > combinations([1,2])  
> > =\> [[2], [1, 2], [], [1]]  
> > combinations([1,2,3])  
> > =\> [[3], [1, 3], [2, 3], [1, 2, 3], [], [1], [2], [1, 2]]

enjoy.  
[http://www.workingwithrails.com/person/12394-matthew-rudy-jacobs](http://www.workingwithrails.com/person/12394-matthew-rudy-jacobs)
