100 doors: Difference between revisions
→{{header|Clojure}}
Line 1,510:
(defn open-doors [] (for [[d n] (map vector (doors) (iterate inc 1)) :when d] n))
(defn print-open-doors []
(println
"Open doors after 100 passes:"
(apply str (interpose ", " (open-doors)))))</lang>
'''Alternative Unoptimized / functional '''
<lang clojure>(defn open-doors []
(->> (for [step (range 1 101), occ (range step 101 step)] occ)
frequencies
(filter (comp odd? val))
(map first)
sort))
(defn print-open-doors []
Line 1,523 ⟶ 1,536:
(defn open-doors [] (for [[d n] (map vector (doors) (iterate inc 1)) :when d] n))
(defn print-open-doors []
(println
"Open doors after 100 passes:"
(apply str (interpose ", " (open-doors)))))</lang>
'''Alternative Optimized / functional'''
<lang clojure>(defn open-doors [] (->> (iterate inc 1) (map #(* % %)) (take-while #(<= % 100))))
(defn print-open-doors []
|