Anonymous user
Permutations by swapping: Difference between revisions
Small improvements in Python: recursive
(+ two D versions) |
(Small improvements in Python: recursive) |
||
Line 309:
===Python: recursive===
After spotting the pattern of highest number being inserted into each perm of lower numbers from right to left, then left to right, I developed this recursive function:
<lang python>def
return [(tuple(item), -1 if i %2 else 1) for i, item in enumerate(sperm(n))]▼
if items <= 0:▼
return [[]]▼
else:▼
new_items = []▼
# step down▼
new_items += [item[:i] + [items - 1] + item[i:] \
for i in range(len(item) + 1)]
▲def sperm(items):
for i, item in enumerate(s_perm(n))]</lang>
▲ if items <= 0:
▲ return [[]]
▲ else:
▲ new_items = []
▲ for item in sperm(items - 1):
▲ if dir == 1:
▲ # step down
▲ new_items += [item[:i] + [items-1] + item[i:] for i in range(len(item), -1, -1)]
▲ else:
▲ # step up
▲ new_items += [item[:i] + [items-1] + item[i:] for i in range(len(item) + 1)]
▲ return new_items</lang>
;Sample output:
|