<?xml version="1.0"?>
<paste-with-annotations>
  <paste>
    <number>
      <integer>96733</integer>
    </number>
    <user>
      <string>Snamich</string>
    </user>
    <title>
      <string>Number Guessing Game</string>
    </title>
    <contents>
      <string>;;__________________________________________________
;;;; Guess the number REPL game

; uses closures to capture the state of the game and accessor functions to check and reset state

(defun guess-number-game ()
  (reset-number)
  (reset-status)
  (loop
     until (check-status)
     for input = (prompt-for-number)
     do (check-guess input))
  (if (y-or-n-p &quot;Play again?&quot;)
      (guess-number-game)
      (format t &quot;See you next time!~%&quot;)))

(let ((number nil)
      (guesses 0)
      (won? nil))
  (defun reset-number ()
    (setf number (+ (random 100) 1)
	  guesses 0)
    'ready)
  (defun reset-status ()
    (setf won? nil)
    'ready)
  (defun check-guess (x)
    (incf guesses)
    (cond ((= x number) 
	   (setf won? t)
	   (format t &quot;It took you ~a guesses.~%&quot; guesses))
	  ((&lt; x number) (format t &quot;Too low.~%&quot;))
	  ((&gt; x number) (format t &quot;Too high.~%&quot;))))
  (defun check-status ()
    won?))

(defun prompt-for-number ()
  (format t &quot;Please enter a number: &quot;)
  (let ((input (read)))
    (if (numberp input)
	input
	(prompt-for-number))))</string>
    </contents>
    <universal-time>
      <integer>3478201267</integer>
    </universal-time>
    <channel>
      <string>None</string>
    </channel>
    <colorization-mode>
      <string>Common Lisp</string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <keyword>TRUE</keyword>
    </is-unicode>
    <deletion-requested>
      <null/>
    </deletion-requested>
    <deletion-requested-email>
      <null/>
    </deletion-requested-email>
    <expiration-time>
      <null/>
    </expiration-time>
  </paste>
</paste-with-annotations>
