From: Stefan Walk Date: 2005-12-24T09:32:51+09:00 Subject: Re: Translate from Python to Ruby Non-recursive version: I'm sure you can translate this for sets... class Array def powset ret = [] 0.upto(2**size - 1) do |n| ret << [] 0.upto(size - 1) do |i| ret.last << self[i] if (n & (1 << i)) != 0 end end ret end end p [].powset p [1].powset p [1,2].powset p [1,2,3].powset [[]] [[], [1]] [[], [1], [2], [1, 2]] [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]