42 lines
1.4 KiB
Scheme
42 lines
1.4 KiB
Scheme
; (load "tester.ss")
|
|
;; by hand, bottom
|
|
|
|
;; ------------------------------------------------------------------------
|
|
;; testing repl-list
|
|
;; teachpack: guess.ss
|
|
|
|
;; check-guess-for-list : (listof DIGIT) number -> symbol
|
|
;; to determine how guess digits and target relate to each other
|
|
(define (check-guess-for-list guess-list target)
|
|
(check-guess (convert guess-list)target))
|
|
|
|
;; check-guess : number number -> symbol
|
|
;; to determine how guess and target relate to each other
|
|
(define (check-guess guess target)
|
|
(cond
|
|
((< target guess) 'TooLarge)
|
|
((= target guess) 'Perfect)
|
|
((> target guess) 'TooSmall)))
|
|
|
|
;; convert : (listof DIGIT) -> number
|
|
;; to convert a vector of digits into a number
|
|
;; 0-th digit is right-most digit in number,
|
|
;; N-th digit is left-most digit in number
|
|
(define (convert digits)
|
|
(cond
|
|
((empty? digits) 0)
|
|
(else (+ (first digits) (* (convert (rest digits)) 10)))))
|
|
|
|
;; EXAMPLES/TESTS for convert:
|
|
(= (convert (cons 1 (cons 2 (cons 3 empty)))) 321)
|
|
(= (convert (cons 4 (cons 5 (cons 6 empty)))) 654)
|
|
|
|
;; EXAMPLES/TESTS for check-guess-for-list:
|
|
(eq? (check-guess-for-list (cons 0 (cons 0 (cons 5 empty))) 631) 'TooSmall)
|
|
(eq? (check-guess-for-list (cons 6 (cons 0 (cons 7 empty))) 631) 'TooLarge)
|
|
(eq? (check-guess-for-list (cons 1 (cons 3 (cons 6 empty))) 631) 'Perfect)
|
|
|
|
;; Test with GUI: set lib to guess-lib.ss
|
|
(guess-with-gui-list 2 check-guess-for-list)
|
|
|