Skip to content

Instantly share code, notes, and snippets.

@bparanj
Last active August 2, 2020 19:27
Show Gist options
  • Save bparanj/7a9435934ecb58636c5068a1feb17972 to your computer and use it in GitHub Desktop.
Save bparanj/7a9435934ecb58636c5068a1feb17972 to your computer and use it in GitHub Desktop.
def generate_subsets(i, sol, elements):
# Base case
if i == len(elements):
# Print complete solution
print_subset_binary(sol, elements)
else:
# Generate candidate elements
for k in range(0, 2):
# Include candidate in partial solution
sol[i] = k
# Expand partial solution at position i+1
generate_subsets(i + 1, sol, elements)
# Remove candidate from partial solution
sol[i] = None # optional
def generate_subsets_wrapper(elements ):
sol = [None] * (len(elements))
generate_subsets(0, sol, elements)
def print_subset_binary(sol, elements):
no_elements = True
print('{', end='')
for i in range(0, len(sol)):
if sol[i] == 1:
if no_elements:
print(elements[i], sep='', end='')
no_elements = False
else:
print(', ', elements[i], sep='', end='')
print('}')
print(generate_subsets_wrapper(['a', 'b', 'c']))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment