Download code

Jump to: navigation, search

Back to Kth_permutation_(Python,_functional)

Download for Windows: single file, zip

Download for UNIX: single file, zip, tar.gz, tar.bz2

kthperm.py

 1 # The authors of this work have released all rights to it and placed it
 2 # in the public domain under the Creative Commons CC0 1.0 waiver
 3 # (http://creativecommons.org/publicdomain/zero/1.0/).
 4 # 
 5 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 6 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 7 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 8 # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 9 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
11 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 # 
13 # Retrieved from: http://en.literateprograms.org/Kth_permutation_(Python,_functional)?oldid=19167
14 
15 rr = lambda n,k: (n > 1) and [k%n] + rr(n-1,k/n) or [0]
16 
17 dfr = lambda rs: len(rs) and rs[:1] + [r + (rs[0]<=r) for r in dfr(rs[1:])] or []
18 par = lambda rs: sum(rs)%2
19 perm = lambda xs,k: [xs[i] for i in dfr(rr(len(xs),k))]
20 if __name__ == "__main__":
21     for k in range(24):
22         print "".join(perm("perm",k)), par(rr(4,k))


hijacker
hijacker
hijacker
hijacker