Mega Code Archive

 
Categories / Ruby / Array
 

Set permutation for Array

class Array   def powerset     num = 2**size     ps = Array.new(num, [])     self.each_index do |i|       a = 2**i       b = 2**(i+1) - 1       j = 0       while j < num-1         for j in j+a..j+b           ps[j] += [self[i]]         end         j += 1       end     end     ps   end end x = [1, 2, 3] y = x.powerset # y is now: #   [[], [1], [2], [1,2], [3], [1,3], [2,3], [1,2,3]]