August 10, 2018

4clojure 131 - Sum Some Set Subsets

Given a variable number of sets of integers, create a function which returns true iff all of the sets have a non-empty subset with an equivalent summation.

(ns live.test
  (:require [cljs.test :refer-macros [deftest is run-tests]]))
  
(defn sum-set? [& sets]
  ; complete this function to make tests pass
  )
  
(deftest sum-set?-test
  (is (= true  (sum-set? #{-1 1 99} 
             #{-2 2 888}
             #{-3 3 7777}))) ; ex. all sets have a subset which sums to zero
  (is (= false (sum-set? #{1}
             #{2}
             #{3}
             #{4})))
  (is (= true  (sum-set? #{1})))
  (is (= false (sum-set? #{1 -3 51 9} 
             #{0} 
             #{9 2 81 33})))
  (is (= true  (sum-set? #{1 3 5}
             #{9 11 4}
             #{-3 12 3}
             #{-3 4 -2 10})))
  (is (= false (sum-set? #{-1 -2 -3 -4 -5 -6}
             #{1 2 3 4 5 6 7 8 9})))
  (is (= true  (sum-set? #{1 3 5 7}
             #{2 4 6 8})))
  (is (= true  (sum-set? #{-1 3 -5 7 -9 11 -13 15}
             #{1 -3 5 -7 9 -11 13 -15}
             #{1 -1 2 -2 4 -4 8 -8})))
  (is (= true  (sum-set? #{-10 9 -8 7 -6 5 -4 3 -2 1}
             #{10 -9 8 -7 6 -5 4 -3 2 -1}))))
  
(run-tests)
Tags: coding exercises KLIPSE 4clojure Clojure