Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (deftemplate film
- (slot nazov (type LEXEME))
- (slot rezia (type STRING))
- (slot rok (type INTEGER))
- (multislot herci (type STRING))
- )
- (deffacts filmy
- (film
- (nazov Janosik)
- (rezia "Pavol Bielik")
- (rok 1963)
- (herci "Stefan Kvietik" "Juraj Kukura" "Magda Vasaryova" "Emilia Vasaryova" "Frantisek Dibarbora" "Zuzana Kocurikova")
- )
- (film
- (nazov "Drak sa vracia")
- (rezia "Pavol Bielik")
- (rok 1971)
- (herci "Stefan Kvietik" "Magda Vasaryova" "Zdena Studenkova" "Katarina Kolnikova" "Vlado Muller")
- )
- (film
- (nazov "Dracie diery")
- (rezia "Marek Tapak")
- (rok 1975)
- (herci "Emilia Vasaryova" "Frantisek Dibarbora" "Juraj Kukura" "Vlado Muller")
- )
- (film
- (nazov Panelak)
- (rezia "Stefan Skrucany")
- (rok 2012)
- (herci "Zdena Studenkova" "Jozo Vajda" "Zuzana Kocurikova")
- )
- )
- (defrule nacitaj-film
- (declare (salience 100))
- =>
- (printout t "zadajte nazov filmu" crlf)
- (bind ?name (readline))
- (printout t "zadajte meno rezisera" crlf)
- (bind ?director (readline))
- (printout t "zadajte mena hercov ako stringy" crlf)
- (bind ?actors (readline))
- (assert (film (rezia ?director) (nazov ?name) (rok 2000) (herci (explode$ ?actors))))
- )
- (defrule ulohaB
- (film (nazov ?name) (rezia ?director) (rok ?year) (herci $?actors))
- (test (> 2000 ?year))
- (test (member$ "Magda Vasaryova" ?actors))
- =>
- (printout t "UlohaB: " ?name " " ?director " " ?year " " ?actors crlf)
- )
- (defrule ulohaC
- (film (nazov ?name) (rezia ?director) (rok ?year) (herci $?actors))
- (test (< 5 (length$ ?actors)))
- =>
- (printout t "UlohaC: " ?name " " ?director " " ?year " " ?actors crlf)
- )
- Byty
- (deftemplate byt
- (slot mesto)
- (slot poschodie)
- (multislot miestnosti (type SYMBOL) (allowed-symbols kuchyna spalna_1 spalna_2 satnik detska_izba obyvacka))
- (multislot rozmeryKuchyne)
- (multislot rozmeryDetskejIzby)
- (multislot rozmeryObyvacky (default 0 0))
- )
- (deffacts byty
- (byt
- (mesto Bratislava)
- (poschodie 4)
- (miestnosti kuchyna obyvacka detska_izba spalna_1 spalna_2 satnik)
- (rozmeryKuchyne 3 3)
- (rozmeryObyvacky 4 5)
- (rozmeryDetskejIzby 5 5)
- )
- (byt
- (mesto Piestany)
- (poschodie 2)
- (miestnosti kuchyna obyvacka detska_izba spalna_1)
- (rozmeryKuchyne 4 3)
- (rozmeryObyvacky 6 6)
- (rozmeryDetskejIzby 5 4)
- )
- (byt
- (mesto Puchov)
- (poschodie 5)
- (miestnosti obyvacka detska_izba spalna_1)
- (rozmeryObyvacky 7 4)
- (rozmeryDetskejIzby 5 5)
- )
- (byt
- (mesto Bratislava)
- (poschodie 2)
- (miestnosti kuchyna obyvacka detska_izba spalna_1 spalna_2 )
- (rozmeryKuchyne 4 4)
- (rozmeryObyvacky 4 5)
- (rozmeryDetskejIzby 5 4)
- )
- (byt
- )
- )
- (defrule nacitaj-byt
- (declare (salience 100))
- =>
- (printout t "zadajte mesto, v ktorom sa byt nachadza" crlf)
- (bind ?city (read))
- (printout t "zadajte poschodie, na ktorom sa byt nachadza" crlf)
- (bind ?floor (read))
- (printout t "zadajte miestnosti, ktorymi byt disponuje" crlf)
- (bind ?rooms (readline))
- (printout t "zadajte rozmery kuchyne oddelene medzerou" crlf)
- (bind ?rk (readline))
- (printout t "zadajte rozmery obyvacky oddelene medzerou" crlf)
- (bind ?ro (readline))
- (printout t "zadajte rozmery detskej izby oddelene medzerou" crlf)
- (bind ?rd (readline))
- (assert (byt (mesto ?city) (poschodie ?floor) (miestnosti (explode$ ?rooms)) (rozmeryKuchyne (explode$ ?rk)) (rozmeryDetskejIzby (explode$ ?rd)) (rozmeryObyvacky (explode$ ?ro)) ))
- )
- (defrule vypis-stvorcove
- (byt (mesto ?city) (poschodie ?floor) (miestnosti $?rooms) (rozmeryKuchyne ?r1 ?r2) )
- (test (= ?r1 ?r2))
- =>
- (printout t ?city " " ?floor " " ?rooms crlf)
- )
- (deffacts pomocneMinimum
- (minimum 9999)
- )
- (defrule najdi-min
- (byt (rozmeryKuchyne ?k1 ?k2) (rozmeryObyvacky ?o1 ?o2) (rozmeryDetskejIzby ?d1 ?d2) )
- ?x <- (minimum ?min)
- (test (> ?min (+ (* ?k1 ?k2) (* ?o1 ?o2) (* ?d1 ?d2))))
- =>
- (retract ?x)
- (assert (minimum (+ (* ?k1 ?k2) (* ?o1 ?o2) (* ?d1 ?d2))))
- )
- (defrule vypis-min
- (declare (salience -10))
- (byt (mesto ?city) (poschodie ?floor) (miestnosti $?rooms) (rozmeryKuchyne ?k1 ?k2) (rozmeryObyvacky ?o1 ?o2) (rozmeryDetskejIzby ?d1 ?d2) )
- (minimum ?min)
- (test (= ?min (+ (* ?k1 ?k2) (* ?o1 ?o2) (* ?d1 ?d2))))
- =>
- (printout t "najmensie je: " ?city" " ?floor " " ?rooms crlf)
- )
- Zvierata
- (deffacts databaze
- (zvirata afrika slon zebra zirafa opice antilopa pes)
- (zvirata asie tygr slon opice panda pes)
- (zvirata evropa pes zajic jelen kocka medved rys)
- (nactena_volba))
- (defrule zobraz_menu
- ?x <- (nactena_volba)
- =>
- (retract ?x)
- (printout t "-----------------<NABIDKA>------------------" crlf)
- (printout t "Zjisti o zvireti, kde zije ... c" crlf)
- (printout t "Zjisti o psovi, kde zije ... e" crlf)
- (printout t "Zadej nove zvire do seznamu ... d" crlf)
- (printout t "Zjisti pocet druhu na kontinente ...f" crlf)
- (printout t "Konec programu ... k" crlf)
- (printout t "============================================" crlf)
- (printout t "Zadejte svoji volbu:")
- (bind ?volba (read))
- (assert (moje_volba ?volba)))
- ;----------
- (defrule zrus_volbu_a
- ?x <- (moje_volba a)
- =>
- (retract ?x)
- (assert(nactena_volba)))
- (defrule zadej_zvire
- (moje_volba c)
- =>
- (printout t "Zadejte druh zvirete:" crlf)
- (bind ?zvire (read))
- (assert (chci_zvire ?zvire)))
- (defrule zisti_psa
- (moje_volba e)
- =>
- (assert (chci_zvire "pes")))
- (defrule vypis_kontinent_pro_moje_zvire
- (chci_zvire ?x)
- (zvirata ?kontinent $?zvirata)
- (chci_zvire ?x&:(member$ ?x $?zvirata))
- =>
- (printout t ?x "-" ?kontinent crlf))
- (defrule zrus_volbu_c_a_moje_zvire
- (declare (salience -10))
- ?x <- (moje_volba c)
- ?y <- (chci_zvire ?nejake)
- =>
- (retract ?x)
- (retract ?y)
- (assert (nactena_volba)))
- (defrule zadej_kontinent_pro_nove_zvire
- (moje_volba d)
- =>
- (printout t "Zadejte nazev kontinentu kam vase zvire patri:" crlf)
- (bind ?k (read))
- (assert (nove_zvire_kontinent ?k)))
- (defrule zadej_zvire_pro_seznamX
- (nove_zvire_kontinent ?k)
- =>
- (printout t "Zadejte nove zvire:" crlf)
- (bind ?x (read))
- (assert (pridej_zvire ?x)))
- (defrule pridej_zvire_do_seznamu
- ?a <- (nove_zvire_kontinent ?zeme)
- ?b <- (pridej_zvire ?x)
- ?staryseznam <- (zvirata ?zeme $?zvirata)
- =>
- (retract ?a ?b ?staryseznam)
- (assert(zvirata ?zeme ?zvirata ?x))
- (printout t "Zvire bylo pridano do seznamu !" crlf))
- (defrule kontinent_a_pocet_zvirat1
- (moje_volba f)
- =>
- (printout t "Zadejte nazev kontinentu:"crlf)
- (bind ?k (read))
- (assert (chci_kontinent ?k)))
- (defrule kontinent_a_pocet_zvirat2
- ?smazvolbu <- (moje_volba f)
- ?smazk <-(chci_kontinent ?k)
- (zvirata ?k $?zvirata)
- =>
- (bind ?x (length$ ?zvirata))
- (printout t "Na kontinente-" ?k "je:" ?x "-zvirat" crlf)
- (retract ?smazk ?smazvolbu)
- (assert (nactena_volba)))
- (defrule ukonci_program
- (moje_volba k)
- =>
- (printout t "Konec programu !" crlf))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement