home *** CD-ROM | disk | FTP | other *** search
-
- ;;;======================================================
- ;;; Number Puzzle Problem
- ;;;
- ;;; Solves the number puzzle problem in which
- ;;;
- ;;; GERALD
- ;;; + DONALD
- ;;; ------
- ;;; = ROBERT
- ;;;
- ;;; CLIPS Version 6.0 Example
- ;;;
- ;;; To execute, merely load, reset and run.
- ;;; This example takes alot of memory to execute.
- ;;;======================================================
-
- (defrule startup
- =>
- (printout t t "The problem is" t t)
- (printout t " GERALD" t)
- (printout t " + DONALD" t)
- (printout t " ------" t)
- (printout t " = ROBERT" t t)
- (assert (number 0)
- (number 1)
- (number 2)
- (number 3)
- (number 4)
- (number 5)
- (number 6)
- (number 7)
- (number 8)
- (number 9)
- (letter G)
- (letter E)
- (letter R)
- (letter A)
- (letter L)
- (letter D)
- (letter O)
- (letter N)
- (letter B)
- (letter T)))
-
- (defrule generate-combinations
- (number ?x)
- (letter ?a)
- =>
- (assert (combination ?a ?x)))
-
- (defrule find-solution
- (combination D ?d)
- (combination T ?t&~?d)
- (test (= (mod (+ ?d ?d) 10) ?t))
- (combination L ?l&~?d&~?t)
- (combination R ?r&~?d&~?t&~?l)
- (test (= (mod (+ ?d ?d
- (* 10 ?l) (* 10 ?l))
- 100)
- (+ (* 10 ?r) ?t)))
- (combination A ?a&~?d&~?t&~?l&~?r)
- (combination E ?e&~?d&~?t&~?l&~?r&~?a)
- (test (= (mod (+ ?d ?d
- (* 10 ?l) (* 10 ?l)
- (* 100 ?a) (* 100 ?a))
- 1000)
- (+ (* 100 ?e) (* 10 ?r) ?t)))
- (combination N ?n&~?d&~?t&~?l&~?r&~?a&~?e)
- (combination B ?b&~?d&~?t&~?l&~?r&~?a&~?e&~?n)
- (test (= (mod (+ ?d ?d
- (* 10 ?l) (* 10 ?l)
- (* 100 ?a) (* 100 ?a)
- (* 1000 ?r) (* 1000 ?n))
- 10000)
- (+ (* 1000 ?b) (* 100 ?e) (* 10 ?r) ?t)))
- (combination O ?o&~?d&~?t&~?l&~?r&~?a&~?e&~?n&~?b)
- (combination G ?g&~?d&~?t&~?l&~?r&~?a&~?e&~?n&~?b&~?o)
- (test (= (+ ?d ?d
- (* 10 ?l) (* 10 ?l)
- (* 100 ?a) (* 100 ?a)
- (* 1000 ?r) (* 1000 ?n)
- (* 10000 ?e) (* 10000 ?o)
- (* 100000 ?g) (* 100000 ?d))
- (+ (* 100000 ?r) (* 10000 ?o) (* 1000 ?b) (* 100 ?e) (* 10 ?r) ?t)))
- =>
- (printout t "A Solution is:" t t)
- (printout t " G = " ?g t)
- (printout t " E = " ?e t)
- (printout t " R = " ?r t)
- (printout t " A = " ?a t)
- (printout t " L = " ?l t)
- (printout t " D = " ?d t)
- (printout t " O = " ?o t)
- (printout t " N = " ?n t)
- (printout t " B = " ?b t)
- (printout t " T = " ?t t)
- (printout t t)
- (printout t " " ?g ?e ?r ?a ?l ?d t)
- (printout t " + " ?d ?o ?n ?a ?l ?d t)
- (printout t " " "------" t)
- (printout t " = " ?r ?o ?b ?e ?r ?t t t))
-
-
-