diff 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
line wrap: on
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/rlm/play.clj	Tue Oct 18 00:57:08 2011 -0700
     1.3 @@ -0,0 +1,22 @@
     1.4 +(ns rlm.play)
     1.5 +
     1.6 +(defn play
     1.7 +  ([] (play 10))
     1.8 +  ([n]
     1.9 +     (loop [i 0
    1.10 +	    state false
    1.11 +	    turned-on (vec (repeat n false))
    1.12 +	    turned-off 0]
    1.13 +       (if (== turned-off (dec n))
    1.14 +	 i
    1.15 +	 (let [p (rand-int n)
    1.16 +	       i (inc i)]
    1.17 +	   (if (not= p 0)
    1.18 +	     (if (and (not state) (not (turned-on p)))
    1.19 +	       (recur i true (assoc turned-on p true) turned-off)
    1.20 +	       (recur i state turned-on turned-off))
    1.21 +	     (if state
    1.22 +	       (recur i false turned-on (inc turned-off))
    1.23 +	       (recur i state turned-on turned-off))))))))
    1.24 +
    1.25 +