Source code for smolyak.util
import numpy as np
[docs]def permute(a):
"""
Creates all unique combinations of a list a that is passed in.
Function is based off of a function written by John Lettman:
TCHS Computer Information Systems. My thanks to him.
"""
a.sort() # Sort.
## Output the first input sorted.
yield list(a)
i = 0
first = 0
alen = len(a)
## "alen" could also be used for the reference to the last element.
while(True):
i = alen - 1
while(True):
i -= 1 # i--
if(a[i] < a[(i + 1)]):
j = alen - 1
while(not (a[i] < a[j])): j -= 1 # j--
a[i], a[j] = a[j], a[i] # swap(a[j], a[i])
t = a[(i + 1):alen]
t.reverse()
a[(i + 1):alen] = t
# Output current.
yield list(a)
break # next.
if(i == first):
a.reverse()
# yield list(a)
return