100 doors: Difference between revisions

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 []
10

edits