


Program (Raw):
(defun ask (question)
(format t "~%~A (yes/no): " question)
(force-output)
(let ((response (read-line)))
(string= (string-downcase response) "yes")))
(defun guess-number (low high)
(let ((mid (floor (+ low high) 2)))
(cond
((> low high)
(format t "~%Hmm, something went wrong! Are you sure you're answering honestly?"))
((ask (format nil "Is your number ~A?" mid))
(format t "~%🎉 Yay! I guessed your number: ~A" mid))
((ask (format nil "Is your number greater than ~A?" mid))
(guess-number (+ mid 1) high))
(t
(guess-number low (- mid 1))))))
(defun start-game ()
(format t "~%Think of a number between 1 and 100. I will try to guess it!")
(guess-number 1 100))
(start-game)