RosettaCodeData/Task/Ordered-partitions/Python/ordered-partitions-1.py

16 lines
388 B
Python

from itertools import combinations
def partitions(*args):
def p(s, *args):
if not args: return [[]]
res = []
for c in combinations(s, args[0]):
s0 = [x for x in s if x not in c]
for r in p(s0, *args[1:]):
res.append([c] + r)
return res
s = range(sum(args))
return p(s, *args)
print partitions(2, 0, 2)