codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
def get_next_perm(p): n = len(p) i = n - 1 while (i - 1) >= 0 and p[i - 1] > p[i]: i -= 1 if i == 0: return p # this lookup may be optimized j = n - 1 while p[j] <= p[i - 1]: j -= 1 p[i - 1], p[j] = p[j], p[i - 1] # reverse i..n-1 k = n - 1 while i < k: p[i], p[k] = p[k], p[i] i += 1 k -= 1 return p def value(p): return "".join(p) if __name__ == "__main__": perm = "1 2 3 4 5".split() print(value(perm)) old = [] while True: old = perm[:] perm = get_next_perm(perm) if perm < old: print("%d %d!" % (value(perm), value(old))) break elif perm == old: break print(value(perm))
Private
[
?
]
Run code
Submit