# A puzzle for Pythonistas

Alan James Salmoni alan_salmoni at yahoo.com
Sat Feb 1 14:42:20 CET 2003

```Thanks Anton - much appreciated.

Alan.

antonmuhin íà rambler.ru <antonmuhin at rambler.ru> wrote in message news:<mailman.1044022985.21542.python-list at python.org>...
> Hello, Alan!
>
> I'm by no means an expert, but here what I can suggest:
>
> from __future__ import generators
>
> def indices(seq):
>     """get all the indices for sequence, just a shortcut"""
>     for i in range(len(seq)):
>         yield i
>
> def subsets(n):
>     """generate all the subsets (by indices) for n-set"""
>     isInSubset = [0]*n
>     yield []
>
>     while 1:
>         for i in indices(isInSubset):
>             if isInSubset[i] == 0:
>                 isInSubset[i] = 1
>                 break
>             else:
>                 isInSubset[i] = 0
>         else:
>             raise StopIteration
>
>         yield [i for i in indices(isInSubset) if isInSubset[i] == 1]
>
> def problem(l):
>     for indices in subsets(len(l)):
>         part = [l[i] for i in indices]
>         if len(part) > 1:
>             print part
>
> if __name__ == "__main__":
>     problem(range(4))
>
> HTH,
> Anton.

```