Как вернуть переставленные элементы списка один за другим в рекурсивной функции перестановки? - PullRequest
1 голос
/ 26 октября 2019

Я пытаюсь написать декодер, который использует 26 английских букв. Но с 26! слишком много для вычисления, функция My Permutation не может вернуть общий список, поэтому я хочу вернуть эти элементы один за другим, чтобы оценить их отдельно. Если бы кто-нибудь помог мне, это было бы здорово. Ниже приведена функция перестановки.

(defun permutations (coll)
    (if (not (cdr coll))
        (list (first coll))
        (loop for el in coll nconc
            (mapcar #'(lambda (combos) 
                (cons el combos))    
                (permutations (remove el coll)))

        )
    )
)

1 Ответ

2 голосов
/ 27 октября 2019

Для этого вы можете использовать map-permutations из библиотеки alexandria.

...