aboutsummaryrefslogtreecommitdiff
path: root/mathslap-rec/mathslap-rec.clisp
blob: c09e3c2e3e81cb0a39bc135ae494d8e1a989da6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
;;;; MathSlap program written by Larry Heyl - Game developed by Carl Heyl
;;;; To win make an equation with the supplied numbers, in order, adding any symbols you want but one and only one equal sign.
;;;; This version uses a recursive loop instead of LOOP.

;;;; concise instructions
(print "MathSlap")
(print "Hit Enter for another number. q and Enter to quit.")

(defparameter *line* "")
(defparameter *out* "MathSlap ")
(defparameter *random-state* 0)
(setq *random-state* (make-random-state t))

;;;; append string parameter with a random number 1 through 10 and a space
(defun concat (o)
  (concatenate 'string o (write-to-string (+ (random 10) 1)) " ")
)

(defun recloop (o)
;;;; append o with a random number 1 through 10 and a space
  (setq o (concat o))
  (print o)
;;;; wait for input
  (setq *line* (read-line *standard-input*))
  (if (string= *line* "q")(quit))
  (recloop o)
)

;;;; Add numbers to output string. Comment one of these out to start with 2 numbers.
(setq *out* (concat *out*))
(setq *out* (concat *out*))
;;;; recursive loop
(recloop *out*)