Re: functional lazy shuffle

2013-08-23 Thread NeedMoreDesu
I've written vector version. As you can make subvectors really fast, and you can take element at index really fast, I just throw out last element at each iteration. (letfn [(vec-throw-out [v i] (pop (assoc v i (get v (dec (count v))] (defn lazy-shuffle [v] (if (seq v) (let [idx

Re: a lazy version of shuffle.

2013-08-23 Thread NeedMoreDesu
(letfn [(vec-throw-out [v i] (pop (assoc v i (get v (dec (count v))] (defn lazy-shuffle [v] (if (seq v) (let [idx (rand-int (count v))] (cons (get v idx) (lazy-seq (lazy-shuffle (vec-throw-out v idx (let [s (range 100) v (vec s)] (ti