8 lines
354 B
Common Lisp
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)))
|