                               [k v]))]
               {k (reduce f (map second v))}))) concat {:a [3], :b [6]} {:a [4 5], :c [8 9]} {:b [7]})
 
-;problem 70
+;problem 70 camel casing
 ((fn [s]
    (let [[a & others] (clojure.string/split s (re-pattern "-"))]
      (apply str a
             (map #(let [[x & ys] %]
                     (apply str (Character/toUpperCase x) ys)) others)))) "multi-word-key")
 
-;problem 75
+;problem Euler's totient function
 ((fn [x] (letfn [(gcd [a b]
                    (loop [ia a ib b]
                      (if (= ib 0)

                       (recur ib (mod ia ib)))))]
           (count (filter #(= 1 (gcd % x)) (range 1 (inc x)))))) 99)

;problem 86
((fn [x]
   (letfn [(square-ch [y] (let [n (Integer/parseInt (str y))] (* n n)))]
     (loop [s (str x) ctrl #{}]

(ns fourclojure.4-clojure)

;problem 69 merge with function
((fn [f & ms]
   (into {} (for [[k v]
                  (group-by first
