Mercurial > rlm
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 |