RosettaCodeData/Task/Set-consolidation/Racket/set-consolidation-1.rkt
2023-07-01 13:44:08 -04:00

14 lines
553 B
Racket

#lang racket
(define (consolidate ss)
(define (comb s cs)
(cond [(set-empty? s) cs]
[(empty? cs) (list s)]
[(set-empty? (set-intersect s (first cs)))
(cons (first cs) (comb s (rest cs)))]
[(consolidate (cons (set-union s (first cs)) (rest cs)))]))
(foldl comb '() ss))
(consolidate (list (set 'a 'b) (set 'c 'd)))
(consolidate (list (set 'a 'b) (set 'b 'c)))
(consolidate (list (set 'a 'b) (set 'c 'd) (set 'd 'b)))
(consolidate (list (set 'h 'i 'k) (set 'a 'b) (set 'c 'd) (set 'd 'b) (set 'f 'g 'h)))