# File lib/facet/array/combinations.rb, line 43 def each_combination(k=2) n = self.size return unless (1..n) === k idx = (0...k).to_a loop do yield self.values_at(*idx) i = k - 1 i -= 1 while idx[i] == n - k + i break if i < 0 idx[i] += 1 (i + 1 ... k).each {|j| idx[j] = idx[i] + j - i} end end