fork download
  1. # Generates set partitions recursively
  2.  
  3.  
  4.  
  5. def partitions(set_):
  6. if not set_:
  7. yield []
  8. return
  9. for i in xrange(2**len(set_)/2):
  10. print i
  11. parts = [set(), set()]
  12. for item in set_:
  13. parts[i&1].add(item)
  14.  
  15. i >>= 1
  16.  
  17. for b in partitions(parts[1]):
  18. yield [parts[0]]+b
  19.  
  20.  
  21. #for i in xrange(5):
  22. # print list(partitions(set(range(i))))
  23.  
  24. print list(partitions(set(range(2))))
Success #stdin #stdout 0.02s 4676KB
stdin
Standard input is empty
stdout
0
1
0
[[set([0, 1])], [set([1]), set([0])]]