Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (check p) (< (random) p))
- (define singlebronze 0)
- (define tenbronze 0)
- (define silvers 0)
- (define golds 0)
- (define (pin r c) (cond
- ((= r 1) (pin 2 (if (check 0.5) c (+ c 1))))
- ((= r 2) (pin 3 (if (check 0.5) c (+ c 1))))
- ((= r 3) (cond
- ((or (= c 1) (= c 6)) (pin 4 (if (= c 1) 1 5)))
- ((not (or (= c 2) (= c 5))) (pin 4 (if (check 0.5) c (- c 1))))
- ((check 0.25) (pin 4 (+ (if (= c 2) 3 4) (if (check 0.5) 0 1)))) ;wheel succeeds
- (else (pin 4 (if (check 0.5) c (- c 1))))))
- ((= r 4) (pin 5 (if (check 0.5) c (+ c 1))))
- ((= r 5) (cond
- ((= c 1) (pin 6 1))
- ((= c 6) (pin 6 5))
- (else (pin 6 (if (check 0.5) c (- c 1))))))
- (( = r 6) (cond
- ((or (= c 2) (= c 4)) (begin (set! singlebronze (+ 1 singlebronze)) 'single))
- ((= c 3) (if (check 0.25) (begin (set! silvers (+ 1 silvers)) 'silver) 'drain))
- (else (pin 7 (if (check 0.5) c (+ c 1))))))
- ((= r 7) (cond
- ((or (= c 1) (= c 6)) (pin 8 (if (= c 1) 1 5)))
- ((or (= c 2) (= c 5)) (if (check 0.25) (pin 8 (- (if (= c 2) 3 4) (if (check 0.5) 0 1))) (pin 8 (- c (if (check 0.5) 0 1)))))
- (else 'TILT)))
- ((= r 8) (cond
- ((or (= c 1) (= c 5)) (begin (set! singlebronze (+ 1 singlebronze)) 'single))
- ((or (= c 2) (= c 4)) (begin (set! tenbronze (+ 1 tenbronze)) 'ten))
- ((check 0.1) (begin (set! golds (+ 1 golds)) 'gold))
- (else 'drain)))))
- (define (run-a-million-tests)
- (begin
- (set! singlebronze 0)
- (set! tenbronze 0)
- (set! silvers 0)
- (set! golds 0)
- (build-list 1000000 (lambda (x) (pin 1 1)))
- `((,singlebronze singles) (,tenbronze tens) (,silvers sets of silvers) (,golds sets of golds))))
- (run-a-million-tests)
Add Comment
Please, Sign In to add comment