2015-02-18 20:47 GMT+01:00 Steve Miner <stevemi...@gmail.com>: > One more try. This time using the int-map contrib library. (Thanks to > Zack Tellman.) > > Warning: I'm assuming that the int-set seq is automagically sorted so I > can reliably turn it back into a vector without sorting. It seems to be > stable at least. I wanted a vector for fast nth access. (Nth and count > are constant time on vectors.) I thought it would be slow to make the > vector every round, but it runs pretty fast. For small values of max, it > was necessary to guard the nth access with the not-found nil. > > (require '[clojure.data.int-map :as im]) > > (defn lucky3 > ([max] (lucky3 1 (im/dense-int-set (range 1 max 2)))) > ([i iset] > (let [v (vec (seq iset)) > n (nth v i nil)] > (if (and n (<= n (count v))) > (recur (inc i) (reduce (fn [sss m] (disj sss (nth v m))) > iset > (range (dec n) (count v) n))) > (sequence iset))))) > > > user=> (time (count (lucky3 1e6))) > "Elapsed time: 48905.491951 msecs" > 71918 >
On my system the performance is about the same as the other recur version. -- Cecil Westerhof -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.