Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
18
Task/Set-consolidation/Clojure/set-consolidation.clj
Normal file
18
Task/Set-consolidation/Clojure/set-consolidation.clj
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
(defn consolidate-linked-sets [sets]
|
||||
(apply clojure.set/union sets))
|
||||
|
||||
(defn linked? [s1 s2]
|
||||
(not (empty? (clojure.set/intersection s1 s2))))
|
||||
|
||||
(defn consolidate [& sets]
|
||||
(loop [seeds sets
|
||||
sets sets]
|
||||
(if (empty? seeds)
|
||||
sets
|
||||
(let [s0 (first seeds)
|
||||
linked (filter #(linked? s0 %) sets)
|
||||
remove-used (fn [sets used]
|
||||
(remove #(contains? (set used) %) sets))]
|
||||
(recur (remove-used (rest seeds) linked)
|
||||
(conj (remove-used sets linked)
|
||||
(consolidate-linked-sets linked)))))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue