Exercise 5.1.3: (back)
;; check-guess3: number number number number -> { 'TooSmall 'Perfect 'TooLarge } ;; guess1 is the least significant digit and guess3 is the most significant digit (define (check-guess3 guess1 guess2 guess3 target) (cond [(< (join-guess guess1 guess2 guess3) target) 'TooSmall] [(= (join-guess guess1 guess2 guess3) target) 'Perfect] [(> (join-guess guess1 guess2 guess3) target) 'TooLarge])) ;; join-guess: number number number -> symbol (define (join-guess num1 num2 num3) (+ (digit1 num1) (digit10 num2) (digit100 num3))) ;; digit1: number -> number (define (digit1 number) (* 1 number)) ;; digit10: number -> number (define (digit10 number) (* 10 number)) ;; digit100: number -> number (define (digit100 number) (* 100 number)) ;; Tests > (check-guess3 1 2 3 200) 'TooLarge > (check-guess3 3 2 1 200) 'TooSmall > (check-guess3 3 2 1 123) 'Perfect