Guest User

Untitled

a guest
Jan 21st, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 2.26 KB | None | 0 0
  1. (define (check p) (< (random) p))
  2. (define singlebronze 0)
  3. (define tenbronze 0)
  4. (define silvers 0)
  5. (define golds 0)
  6. (define (pin r c) (cond
  7.                     ((= r 1) (pin 2 (if (check 0.5) c (+ c 1))))
  8.                     ((= r 2) (pin 3 (if (check 0.5) c (+ c 1))))
  9.                     ((= r 3) (cond
  10.                                ((or (= c 1) (= c 6)) (pin 4 (if (= c 1) 1 5)))
  11.                                ((not (or (= c 2) (= c 5))) (pin 4 (if (check 0.5) c (- c 1))))
  12.                                ((check 0.25) (pin 4 (+ (if (= c 2) 3 4) (if (check 0.5) 0 1)))) ;wheel succeeds
  13.                                (else (pin 4 (if (check 0.5) c (- c 1))))))
  14.                     ((= r 4) (pin 5 (if (check 0.5) c (+ c 1))))
  15.                     ((= r 5) (cond
  16.                                ((= c 1) (pin 6 1))
  17.                                ((= c 6) (pin 6 5))
  18.                                (else (pin 6 (if (check 0.5) c (- c 1))))))
  19.                     (( = r 6) (cond
  20.                                 ((or (= c 2) (= c 4)) (begin (set! singlebronze (+ 1 singlebronze)) 'single))
  21.                                 ((= c 3) (if (check 0.25) (begin (set! silvers (+ 1 silvers)) 'silver) 'drain))
  22.                                 (else (pin 7 (if (check 0.5) c (+ c 1))))))
  23.                     ((= r 7) (cond
  24.                                ((or (= c 1) (= c 6)) (pin 8 (if (= c 1) 1 5)))
  25.                                ((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)))))
  26.                                (else 'TILT)))
  27.                     ((= r 8) (cond
  28.                                ((or (= c 1) (= c 5)) (begin (set! singlebronze (+ 1 singlebronze)) 'single))
  29.                                ((or (= c 2) (= c 4)) (begin (set! tenbronze (+ 1 tenbronze)) 'ten))
  30.                                ((check 0.1) (begin (set! golds (+ 1 golds)) 'gold))
  31.                                (else 'drain)))))
  32.  
  33. (define (run-a-million-tests)
  34.   (begin
  35.     (set! singlebronze 0)
  36.     (set! tenbronze 0)
  37.     (set! silvers 0)
  38.     (set! golds 0)
  39.     (build-list 1000000 (lambda (x) (pin 1 1)))
  40.     `((,singlebronze singles) (,tenbronze tens) (,silvers sets of silvers) (,golds sets of golds))))
  41. (run-a-million-tests)
Add Comment
Please, Sign In to add comment