如何在递归排列函数中逐个返回排列后的列表元素



我正在尝试编写一个使用26个英文字母的解码器。但从26岁开始!太多了,无法计算,我的置换函数无法返回整个列表,所以我想逐个返回这些元素,以便分别对它们进行评估。如果有人帮我,那就太棒了。下面是排列函数。

(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)))
)
)
)

您可以使用库alexandria中的map-permutations

最新更新