Sum multiples of 3 and 5: Difference between revisions

→‎{{header|Clojure}}: Add transducer approach and clean up optimized approach
(→‎{{header|Clojure}}: Add transducer approach and clean up optimized approach)
Line 653:
 
(println (sum-mults 1000 3 5))</lang>
 
Transducers approach:
<lang clojure>(defn sum-mults [n & mults]
(transduce (filter (fn [x] (some (fn [mult] (zero? (mod x mult))) mults)))
+ (range n)))
 
(println (sum-mults 1000 3 5))</lang>
 
Or optimized (translated from Groovy):
<lang clojure>(defn sum-mul [n f]
(let [n1 (/' (inc' n) f)]
(*' f n1 (inc' n1) 1/2)))
 
(def sum-35 #(-> % (sum-mul 3) (+ (sum-mul % 5)) (- (sum-mul % 15))))
15

edits