18 lines
574 B
Python
18 lines
574 B
Python
def s_permutations(seq):
|
|
items = [[]]
|
|
for j in seq:
|
|
new_items = []
|
|
for i, item in enumerate(items):
|
|
if i % 2:
|
|
# step up
|
|
new_items += [item[:i] + [j] + item[i:]
|
|
for i in range(len(item) + 1)]
|
|
else:
|
|
# step down
|
|
new_items += [item[:i] + [j] + item[i:]
|
|
for i in range(len(item), -1, -1)]
|
|
items = new_items
|
|
|
|
return [(tuple(item), -1 if i % 2 else 1)
|
|
for i, item in enumerate(items)]
|