#24: Lexicographic permutations | Ben Cunningham

#24: Lexicographic permutations

Problem by Project Euler · on August 16, 2002

A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:

012 021 102 120 201 210

What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?

Python

def l_collapse(x):
    return [''.join([str(z) for z in y]) for y in x]
    
def l_permute(x):
    if len(x) < 1:
        return [[]]
    else:
        return [[y] + p for y in x
                for p in l_permute([z for z in x if z != y])]

n = 1000000
digits = list('0123456789')

ans = int(l_collapse([l_permute(digits)[n - 1]])[0])

print(ans)
## 2783915460