Jak mogę uzyskać wszystkie możliwe permutacje listy za pomocą Common Lisp?

Próbuję napisać funkcję Common Lisp, która da mi wszystkie możliwe permutacje listy, używając każdego elementu tylko raz. Na przykład lista „(1 2 3) da wynik ((1 2 3) (1 3 2) (2 1 3) (2 3 1) (3 1 2) (3 2 1)).

Napisałem już coś, co działa, ale jest niezgrabne, nie zawsze działa i nawet tego nie rozumiem. Nie proszę o kod, może po prostu o wskazówki, jak o tym myśleć. Nie wiem zbyt wiele o pisaniu algorytmów.

Dzięki, Jason

questionAnswers(4)

yourAnswerToTheQuestion