Module: Permutations::Array

Included in:
Array
Defined in:
lib/permutations.rb

Instance Method Summary collapse

Instance Method Details

#permutations(leftovers = self) ⇒ Object

Recursively permutate nested arrays.



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/permutations.rb', line 4

def permutations(leftovers=self)
  tail = leftovers.last
  return tail.map{|e| [e]} if leftovers.size == 1
  resulting_permutations = []
  permutations(leftovers[0...-1]).each do |permutation|
    tail.each do |tail_element|
      resulting_permutations << (permutation + [tail_element])
    end
  end
  resulting_permutations
end