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!