Write a Lisp function called GUESS, where you try and guess the number thrown by a dice, this will have several parts.This function will randomly choose from 6 possibilities. You call the function with your guess of 1, 2, 3, 4 5 or 6, the function randomly chooses 6 choices and tells you if your guess was right or wrong.
(let ((dice (+ 1 (random 6))))
(cond ((equalp dice n ) (list 'you 'guessed 'right 'it 'was dice))
(t (list 'you 'guessed 'wrong 'it 'was dice)))))
The NOT Predicate in Lisp
We've looked at predicates in Lisp in a previous Lisp tutorial post. Predicates return T or NIL if the statement is true or false. In Lisp T is true and NIL is false. Using NOT turns T into NIL and NIL into T.
For example using the ZEROP predicate we can test if the number is zero:
(zerop 4)
NIL
(zerop 0)
T
Using NOT we can check to see if a number is not zero:
(not (zerop 4))
T
T
NIL
The AND Predicate in Lisp
The AND Predicate in Lisp takes two inputs, both of these must be true for it to evaluate and return T otherwise it returns NIL.
(and (> 6 4) (< 1 3))
T
Here only one of our predicates is true:
(and (numberp 6) (equalp 1 9))
NIL
The OR Predicate in Lisp
The OR Predicate in Lisp returns T if either one or both arguments are true:
(or (numberp 6) (equalp 1 9))T
(or (> 7 6) (equalp 1 1))
T
T
Today's Lisp Challenge
Write a function called BETWEEN that takes 3 input arguments N, MIN and MAX. This function tests to see if N is between MIN and MAX.
Subscribe to Programming Lisp Tutorial Blog and check back to see the solution!