Skip to content

Instantly share code, notes, and snippets.

@htnminh
Created November 8, 2021 02:59
Show Gist options
  • Save htnminh/3a3fa57d251e24d70fc43d57cd017c5e to your computer and use it in GitHub Desktop.
Save htnminh/3a3fa57d251e24d70fc43d57cd017c5e to your computer and use it in GitHub Desktop.
Generate subsets
class Subset():
def __init__(self, n, m):
self.n = n
self.m = m
self.a = [None] + [i for i in range(1, m+1)]
def __str__(self):
return ''.join([str(x) for x in self.a[1:]])
def final(self):
return self.a == [None] + [self.n-self.m+i for i in range(1, self.m+1)]
def to_next(self):
i = self.m
while self.a[i] == self.n-self.m+i:
i -= 1
self.a[i] = self.a[i] + 1
for j in range(i+1, self.m+1):
self.a[j] = self.a[i] + j - i
def generate(n=6, m=4):
curr_config = Subset(n, m)
print(curr_config)
while True:
if not curr_config.final():
curr_config.to_next()
print(curr_config)
else:
break
generate(n=6, m=4)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment