summaryrefslogtreecommitdiff
path: root/number-guesser.scm
blob: 486eea5c7d224764d19ee00081290d0beaa8e12a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Example game:                      ;;
;; scheme@(guile-user)> (start 60 70) ;;
;; $21 = 65                           ;;
;; scheme@(guile-user)> (bigger)      ;;
;; $22 = 68                           ;;
;; scheme@(guile-user)> (bigger)      ;;
;; $23 = 69                           ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; also see (info "(guile) Definition")

(define lower 1)
(define upper 100)

(define (start n m)
  (set! lower (min n m))
  (set! upper (max n m))
  (guess))

;;;; helpers
(define (guess)
  (quotient (+ lower upper) 2))

(define (smaller)
  (set! upper (max lower (- (guess) 1)))
  (guess))

(define (bigger)
  (set! lower (min upper (+ (guess) 1)))
  (guess))