'Cause I feel a little bit cheated! I understand the maths behind the powerset and how the binary system allows 2^N possible numbers for N binary digits, so why explain so much correlation, and pull me away from the whole recursion if you’re going to drop a “you’re not smart enough line”?

Here is the complete solution. You’re not expected to understand every line, just take in the level of complexity.

```
def power_set(set):
power_set_size = 2**len(set)
result = []
for bit in range(0, power_set_size):
sub_set = []
for binary_digit in range(0, len(set)):
if((bit & (1 << binary_digit)) > 0):
sub_set.append(set[binary_digit])
result.append(sub_set)
return result
```

Okay first of all, this code doesn’t look THAT complex…

Secondly, I really don’t like examples that I am not supposed to understand… And surely I don’t understand this one, because the preceding explanation is very poor in terms of python code, such as:

```
set = ['a', 'b', 'c']
binary_number = "101"
# produces the subset ['a', 'c']
# 'b' is left out because its binary digit is 0
```

(It doesn’t actually do anything except creating two variables…)

Which finally brings me to case-study conclusion quote (which also could double as a subtitle to the whole intro of this lesson):

(I would love to rewrite this commend describing how much I liked both methods explained PROPERLY in order to make the comparison.)