lisp中列表中的对子集的组合

时间:2015-03-09 12:27:56

标签: list lisp subset

如何从conman lisp中的列表创建所有可能的对子集。例如,列表A包含四个元素

list A= ("A" "B" "C" "D")  

the expected output is as follows:

(("A","B"),("A","C"), ("A","D"),("B","C"),("B","D"), ("C","D"))

有人可以帮我生成这些子集。 非常感谢

1 个答案:

答案 0 :(得分:1)

阅读mapcar et al

(defparameter a (list 1 2 3 4))
(mapcon (lambda (tail)
          (mapcar (lambda (x)
                    (cons (car tail) x))
                  (cdr tail)))
        a)
==> ((1 . 2) (1 . 3) (1 . 4) (2 . 3) (2 . 4) (3 . 4))