Skip to content

Instantly share code, notes, and snippets.

Created December 9, 2011 05:30
Show Gist options
  • Save anonymous/1450320 to your computer and use it in GitHub Desktop.
Save anonymous/1450320 to your computer and use it in GitHub Desktop.
;; flengyel's solution to Sum Some Set Subsets
;; https://4clojure.com/problem/131
(fn [s & ss]
(letfn [
(subsets [s]
(if (empty? s)
#{#{}}
(let [x (set (list (first s)))
dx (clojure.set/difference s x)
t (subsets dx)]
(clojure.set/union t
(map (partial into x) t)))))
(nonempty-subsets [s]
(clojure.set/difference (subsets s) #{#{}}))
(setsums [s]
(let [nonempty (nonempty-subsets s)
n (count nonempty)]
(set (map #(reduce + %1) nonempty))))]
(not (empty? (apply clojure.set/intersection (map setsums (conj ss s)))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment