mirror of
https://github.com/Xevion/lisp-projects.git
synced 2025-12-05 23:15:28 -06:00
47 lines
1.1 KiB
Common Lisp
47 lines
1.1 KiB
Common Lisp
(defparameter *small* 1)
|
|
(defparameter *big* 100)
|
|
|
|
|
|
(defun start-over ()
|
|
(defparameter *small* 1)
|
|
(defparameter *big* 100)
|
|
(guess-my-number)
|
|
)
|
|
|
|
(defun smaller()
|
|
(setf *small* (1- (guess-my-number)))
|
|
(print (guess-my-number))
|
|
)
|
|
|
|
(defun bigger()
|
|
(setf *big* (1+ (guess-my-number)))
|
|
(print (guess-my-number))
|
|
)
|
|
|
|
(defun guess-my-number ()
|
|
(ash (+ *small* *big*) -1)
|
|
)
|
|
|
|
(defun game-loop ()
|
|
(flet ((prompt (string)
|
|
(format "~A " string)
|
|
(finish-output)
|
|
(read nil 'eof nil)))
|
|
(fresh-line)
|
|
(let
|
|
((last "?"))
|
|
(loop while (not (equal last "="))
|
|
|
|
do (setf last (prompt (format t "Is '~A' Smaller (<) or Larger (>)?" (guess-my-number))))
|
|
(cond
|
|
((string= last "<") (smaller))
|
|
((string= last ">") (bigger))
|
|
((string= last "=") (start-over))
|
|
(t (print "Invalid Input") (print last) (fresh-line))
|
|
)
|
|
'DONE))
|
|
)
|
|
)
|
|
|
|
(print (equal "+" "+"))
|
|
(game-loop) |