RosettaCodeData/Task/Set-consolidation/Common-Lisp/set-consolidation.lisp
2023-07-01 13:44:08 -04:00

8 lines
354 B
Common Lisp

(defun consolidate (ss)
(labels ((comb (cs s)
(cond ((null s) cs)
((null cs) (list s))
((null (intersection s (first cs)))
(cons (first cs) (comb (rest cs) s)))
((consolidate (cons (union s (first cs)) (rest cs)))))))
(reduce #'comb ss :initial-value nil)))