Guest User

Untitled

a guest
Jan 21st, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 3.56 KB | None | 0 0
  1. #lang racket
  2. (define (member? a lat) (cond ((null? lat) #f) ((equal? a (car lat)) #t) (else (member? a (cdr lat)))))
  3. (define (check p) (< (random) p))
  4. (define singlebronze 0)
  5. (define tenbronze 0)
  6. (define silvers 0)
  7. (define golds 0)
  8. (define (pin r c) (cond
  9.                     ((= r 1) (pin 2 (if (check 0.5) c (+ c 1))))
  10.                     ((= r 2) (pin 3 (if (check 0.5) c (+ c 1))))
  11.                     ((= r 3) (cond
  12.                                ((or (= c 1) (= c 6)) (pin 4 (if (= c 1) 1 5)))
  13.                                ((not (or (= c 2) (= c 5))) (pin 4 (if (check 0.5) c (- c 1))))
  14.                                ((check 0.25) (pin 4 (+ (if (= c 2) 3 4) (if (check 0.5) 0 1)))) ;wheel succeeds
  15.                                (else (pin 4 (if (check 0.5) c (- c 1))))))
  16.                     ((= r 4) (pin 5 (if (check 0.5) c (+ c 1))))
  17.                     ((= r 5) (cond
  18.                                ((= c 1) (pin 6 1))
  19.                                ((= c 6) (pin 6 5))
  20.                                (else (pin 6 (if (check 0.5) c (- c 1))))))
  21.                     (( = r 6) (cond
  22.                                 ((or (= c 2) (= c 4)) (begin (set! singlebronze (+ 1 singlebronze)) 'single))
  23.                                 ((= c 3) (if (check 0.25) (begin (set! silvers (+ 1 silvers)) 'silver) 'drain))
  24.                                 (else (pin 7 (if (check 0.5) c (+ c 1))))))
  25.                     ((= r 7) (cond
  26.                                ((or (= c 1) (= c 6)) (pin 8 (if (= c 1) 1 5)))
  27.                                ((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)))))
  28.                                (else 'TILT)))
  29.                     ((= r 8) (cond
  30.                                ((or (= c 1) (= c 5)) (begin (set! singlebronze (+ 1 singlebronze)) 'single))
  31.                                ((or (= c 2) (= c 4)) (begin (set! tenbronze (+ 1 tenbronze)) 'ten))
  32.                                ((check 0.1) (begin (set! golds (+ 1 golds)) 'gold))
  33.                                (else 'drain)))))
  34.  
  35. (define (run-a-million-tests shot)
  36.   (begin
  37.     (set! singlebronze 0)
  38.     (set! tenbronze 0)
  39.     (set! silvers 0)
  40.     (set! golds 0)
  41.     (build-list 1000000 (lambda (x) (pin 1 shot)))
  42.     `((,singlebronze singles) (,tenbronze tens) (,silvers sets of silvers) (,golds sets of golds))))
  43. ;(run-a-million-tests 1)
  44. ;(run-a-million-tests 2)
  45. (define petfood 0)
  46. (define specialfood 0)
  47. (define PetLock 0)
  48. (define (b-pin r c)
  49.   (begin (if (> PetLock 0) (set! PetLock (- PetLock 1)) #f)
  50.   (cond
  51.     ((= r 1) (b-pin 2 (+ c (if (> c 2) 1 0))))
  52.     ((= r 2) (cond
  53.                ((= c 1) (b-pin 3 (if (check 0.5) 1 2)))
  54.                ((= c 2) (if (check 0.1) (b-pin 2 3) (b-pin 3 2)))
  55.                ((= c 3) (begin (if (check 0.04) (set! PetLock 6) #f) (b-pin 3 (if (check 0.5) 3 4))))
  56.                ((= c 4) (if (check 0.1) (b-pin 2 3) (b-pin 3 5)))
  57.                (else (b-pin 3 (if (check 0.5) 5 6)))))
  58.     ((= r 3) (b-pin 4 (+ c (if (check 0.5) 0 1))))
  59.     ((= r 4) (cond
  60.                ((member? c `(2 3 5 6)) 'drain)
  61.                ((member? c `(1 7)) (if (check 0.1) (begin (set! petfood (+ petfood 1)) 'food) 'drain))
  62.                (else (if (> PetLock 0) (begin (set! specialfood (+ specialfood 1)) 'special) 'lock1)))))))
  63. (define (b-test ai)
  64.   (begin (set! petfood 0) (set! specialfood 0) (set! PetLock 0) (b-testh ai 1000000)))
  65. (define (b-testh ai n)
  66.   (cond
  67.     ((> n 0) (begin (b-pin 1 (ai n)) (b-testh ai (- n 1))))
  68.     (else `((,petfood Pet Food) (,specialfood Special Food)))))
Add Comment
Please, Sign In to add comment