annotate src/rlm/play.clj @ 0:78a630e650d2

initial import
author Robert McIntyre <rlm@mit.edu>
date Tue, 18 Oct 2011 00:57:08 -0700
parents
children
rev   line source
rlm@0 1 (ns rlm.play)
rlm@0 2
rlm@0 3 (defn play
rlm@0 4 ([] (play 10))
rlm@0 5 ([n]
rlm@0 6 (loop [i 0
rlm@0 7 state false
rlm@0 8 turned-on (vec (repeat n false))
rlm@0 9 turned-off 0]
rlm@0 10 (if (== turned-off (dec n))
rlm@0 11 i
rlm@0 12 (let [p (rand-int n)
rlm@0 13 i (inc i)]
rlm@0 14 (if (not= p 0)
rlm@0 15 (if (and (not state) (not (turned-on p)))
rlm@0 16 (recur i true (assoc turned-on p true) turned-off)
rlm@0 17 (recur i state turned-on turned-off))
rlm@0 18 (if state
rlm@0 19 (recur i false turned-on (inc turned-off))
rlm@0 20 (recur i state turned-on turned-off))))))))
rlm@0 21
rlm@0 22