Ali*_*i A 1 lisp combinations list common-lisp
从lisp中的任何给定列表,我想获得该列表的元素的两个元素组合,而没有重复的组合(意思是(ab)=(ba),应该删除一个)
例如,如果我有一个(abcd)列表,
我想得到((ab)(ac)(ad)(bc)(bd)(cd))
(defun combinations (list)
(loop for (a1 . r1) on list
nconc (loop for a2 in r1 collect (list a1 a2))))
CL-USER 172 > (combinations '(a b c d))
((A B) (A C) (A D) (B C) (B D) (C D))
Run Code Online (Sandbox Code Playgroud)