Skip to content

Commit 9b96da3

Browse files
committed
powerset_bitwise
1 parent f3b10cf commit 9b96da3

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

Diff for: Bit Manipulation/3.7.1.powerset_bitwise.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
Generate power set using bitwise operators
3+
4+
5+
"""
6+
from typing import List, Set
7+
8+
def get_power_set(ip_set: List[str]) -> Set[str]:
9+
set_size = len(ip_set)
10+
power_set_size = pow(2, set_size)
11+
12+
result = []
13+
value = ''
14+
for counter in range(0, power_set_size):
15+
for i in range(0, set_size):
16+
# If the ith bit in counter is set
17+
if counter & (1 << i):
18+
value = value + ip_set[i]
19+
result.append(value)
20+
value = ''
21+
22+
return set(result)
23+
24+
25+
if __name__ == '__main__':
26+
s = ['a', 'b', 'c']
27+
28+
power_set = get_power_set(ip_set=s)
29+
30+
print(power_set)

0 commit comments

Comments
 (0)