microsoft / PythonProgrammingPuzzles

A Dataset of Python Challenges for AI Research
MIT License
966 stars 94 forks source link

New puzzle: next permutation in lexicographical order #7

Open TalSchuster opened 3 years ago

TalSchuster commented 3 years ago
def sat(nx: List[int], x=[1, 2, 4, 3]): 
    """Find the next permutation of a given list by lexicographical ordering."""
    import itertools
    assert len(x) == len(nx) and set(x) == set(nx)
    return x < nx and all([list(perm) <= x or list(perm) >= nx for perm in list(itertools.permutations(x))])
Reveal solution ```python def sol(): return [1, 3, 2, 4] ```
Reveal solution ```python def sol(): import itertools perms = sorted([list(p) for p in list(itertools.permutations(x))]) return perms[perms.index(x) + 1] ```

Solvers, post your solutions in the comments using the following formatting:

<details><summary>Reveal solution</summary>

```python
def sol():
    return "world"  # replace with your solution

akalai commented 3 years ago

Nice one!

Reveal solution ```python def sol(): return [1, 3, 2, 4] ```