Я пытаюсь написать функцию Common Lisp, которая даст мне все возможные перестановки списка, используя каждый элемент только один раз. Например, список '(1 2 3) даст выход ((1 2 3) (1 3 2) (2 1 3) (2 3 1) (3 1 2) (3 2 1)).
Я уже писал что-то подобное, но он неуклюж, он не всегда работает, и я даже не понимаю его. Я не прошу код, просто, может быть, для некоторых советов о том, как думать об этом. Я мало знаю о написании алгоритмов.
Спасибо, Джейсон