Sunteți pe pagina 1din 1

(deftemplate culori(multislot culoare))

(assert(culori( culoare nil)))


(deftemplate tari(slot tara)(multislot vecini))
(assert (tari(tara nil)(vecini nil)))
(deftemplate ToateTari(slot t))
(deftemplate tColor(slot ta)(slot cul))
(assert( tColor(ta nil)( cul nil)))
(defglobal ?*rasp* = da)
(defglobal ?*num* = 1)
(defrule alegereCulori
(declare(salience 1))
?i <-(culori( culoare nil))
=>
(printout t "Introduceti culorile" crlf)
(bind ?myListCul (explode$ (readline)))
(assert(culori (culoare ?myListCul)))
(retract ?i))
(defrule citeste
?i <- (tari(tara nil))
=>
(while(= ?*rasp* da)
(printout t "Introduceti o tara" crlf)
(bind ?m (read))

(printout t "Introduceti vecini" crlf)


(if(eq ?*num* 1) then
(bind ?myList (explode$ (readline)))
(assert(tari (tara ?m)(vecini ?myList))))
(assert (ToateTari (t ?m)))

(retract ?i)
(printout t "Mai introduceti alta tara? da/nu" crlf)
(bind ?*rasp* (read))
) )
(defrule assertTara
(tari(tara ?x)(vecini $? ?a $?b $?c $?d $?e $?f $?g) )
=>
(bind ?v $?a )
(assert (ToateTari (t $?v)))
)
(defrule assertCuloare
(ToateTari(t $?current))
(tColor(ta $?c)(cul $?cull))
(culori(culoare $? ?a $?b))
=>
(bind ?v $?a )
(if(eq $?cull nil) then
(assert(tColor(ta $?current)(cul $?v))))
)
(defrule afis
(declare(salience -1))
(tColor(ta ?a)(cul $?w))
=>
(printout t "tara " ?a " culoare " $?w crlf)
)

S-ar putea să vă placă și