Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.73 KB | None | 0 0
  1. (deftemplate film
  2. (slot nazov (type LEXEME))
  3. (slot rezia (type STRING))
  4. (slot rok (type INTEGER))
  5. (multislot herci (type STRING))
  6. )
  7.  
  8. (deffacts filmy
  9. (film
  10. (nazov Janosik)
  11. (rezia "Pavol Bielik")
  12. (rok 1963)
  13. (herci "Stefan Kvietik" "Juraj Kukura" "Magda Vasaryova" "Emilia Vasaryova" "Frantisek Dibarbora" "Zuzana Kocurikova")
  14. )
  15. (film
  16. (nazov "Drak sa vracia")
  17. (rezia "Pavol Bielik")
  18. (rok 1971)
  19. (herci "Stefan Kvietik" "Magda Vasaryova" "Zdena Studenkova" "Katarina Kolnikova" "Vlado Muller")
  20. )
  21. (film
  22. (nazov "Dracie diery")
  23. (rezia "Marek Tapak")
  24. (rok 1975)
  25. (herci "Emilia Vasaryova" "Frantisek Dibarbora" "Juraj Kukura" "Vlado Muller")
  26. )
  27. (film
  28. (nazov Panelak)
  29. (rezia "Stefan Skrucany")
  30. (rok 2012)
  31. (herci "Zdena Studenkova" "Jozo Vajda" "Zuzana Kocurikova")
  32. )
  33. )
  34.  
  35. (defrule nacitaj-film
  36. (declare (salience 100))
  37. =>
  38. (printout t "zadajte nazov filmu" crlf)
  39. (bind ?name (readline))
  40. (printout t "zadajte meno rezisera" crlf)
  41. (bind ?director (readline))
  42. (printout t "zadajte mena hercov ako stringy" crlf)
  43. (bind ?actors (readline))
  44.  
  45. (assert (film (rezia ?director) (nazov ?name) (rok 2000) (herci (explode$ ?actors))))
  46. )
  47.  
  48. (defrule ulohaB
  49. (film (nazov ?name) (rezia ?director) (rok ?year) (herci $?actors))
  50. (test (> 2000 ?year))
  51. (test (member$ "Magda Vasaryova" ?actors))
  52. =>
  53. (printout t "UlohaB: " ?name " " ?director " " ?year " " ?actors crlf)
  54. )
  55.  
  56. (defrule ulohaC
  57. (film (nazov ?name) (rezia ?director) (rok ?year) (herci $?actors))
  58. (test (< 5 (length$ ?actors)))
  59. =>
  60. (printout t "UlohaC: " ?name " " ?director " " ?year " " ?actors crlf)
  61. )
  62.  
  63.  
  64.  
  65. Byty
  66. (deftemplate byt
  67. (slot mesto)
  68. (slot poschodie)
  69. (multislot miestnosti (type SYMBOL) (allowed-symbols kuchyna spalna_1 spalna_2 satnik detska_izba obyvacka))
  70. (multislot rozmeryKuchyne)
  71. (multislot rozmeryDetskejIzby)
  72. (multislot rozmeryObyvacky (default 0 0))
  73. )
  74.  
  75. (deffacts byty
  76. (byt
  77. (mesto Bratislava)
  78. (poschodie 4)
  79. (miestnosti kuchyna obyvacka detska_izba spalna_1 spalna_2 satnik)
  80. (rozmeryKuchyne 3 3)
  81. (rozmeryObyvacky 4 5)
  82. (rozmeryDetskejIzby 5 5)
  83. )
  84. (byt
  85. (mesto Piestany)
  86. (poschodie 2)
  87. (miestnosti kuchyna obyvacka detska_izba spalna_1)
  88. (rozmeryKuchyne 4 3)
  89. (rozmeryObyvacky 6 6)
  90. (rozmeryDetskejIzby 5 4)
  91. )
  92. (byt
  93. (mesto Puchov)
  94. (poschodie 5)
  95. (miestnosti obyvacka detska_izba spalna_1)
  96. (rozmeryObyvacky 7 4)
  97. (rozmeryDetskejIzby 5 5)
  98. )
  99. (byt
  100. (mesto Bratislava)
  101. (poschodie 2)
  102. (miestnosti kuchyna obyvacka detska_izba spalna_1 spalna_2 )
  103. (rozmeryKuchyne 4 4)
  104. (rozmeryObyvacky 4 5)
  105. (rozmeryDetskejIzby 5 4)
  106. )
  107. (byt
  108. )
  109. )
  110.  
  111.  
  112. (defrule nacitaj-byt
  113. (declare (salience 100))
  114. =>
  115. (printout t "zadajte mesto, v ktorom sa byt nachadza" crlf)
  116. (bind ?city (read))
  117. (printout t "zadajte poschodie, na ktorom sa byt nachadza" crlf)
  118. (bind ?floor (read))
  119. (printout t "zadajte miestnosti, ktorymi byt disponuje" crlf)
  120. (bind ?rooms (readline))
  121. (printout t "zadajte rozmery kuchyne oddelene medzerou" crlf)
  122. (bind ?rk (readline))
  123. (printout t "zadajte rozmery obyvacky oddelene medzerou" crlf)
  124. (bind ?ro (readline))
  125. (printout t "zadajte rozmery detskej izby oddelene medzerou" crlf)
  126. (bind ?rd (readline))
  127. (assert (byt (mesto ?city) (poschodie ?floor) (miestnosti (explode$ ?rooms)) (rozmeryKuchyne (explode$ ?rk)) (rozmeryDetskejIzby (explode$ ?rd)) (rozmeryObyvacky (explode$ ?ro)) ))
  128. )
  129.  
  130. (defrule vypis-stvorcove
  131. (byt (mesto ?city) (poschodie ?floor) (miestnosti $?rooms) (rozmeryKuchyne ?r1 ?r2) )
  132. (test (= ?r1 ?r2))
  133. =>
  134. (printout t ?city " " ?floor " " ?rooms crlf)
  135. )
  136.  
  137. (deffacts pomocneMinimum
  138. (minimum 9999)
  139. )
  140.  
  141. (defrule najdi-min
  142. (byt (rozmeryKuchyne ?k1 ?k2) (rozmeryObyvacky ?o1 ?o2) (rozmeryDetskejIzby ?d1 ?d2) )
  143. ?x <- (minimum ?min)
  144. (test (> ?min (+ (* ?k1 ?k2) (* ?o1 ?o2) (* ?d1 ?d2))))
  145. =>
  146. (retract ?x)
  147. (assert (minimum (+ (* ?k1 ?k2) (* ?o1 ?o2) (* ?d1 ?d2))))
  148. )
  149.  
  150.  
  151. (defrule vypis-min
  152. (declare (salience -10))
  153. (byt (mesto ?city) (poschodie ?floor) (miestnosti $?rooms) (rozmeryKuchyne ?k1 ?k2) (rozmeryObyvacky ?o1 ?o2) (rozmeryDetskejIzby ?d1 ?d2) )
  154. (minimum ?min)
  155. (test (= ?min (+ (* ?k1 ?k2) (* ?o1 ?o2) (* ?d1 ?d2))))
  156. =>
  157. (printout t "najmensie je: " ?city" " ?floor " " ?rooms crlf)
  158. )
  159.  
  160.  
  161. Zvierata
  162. (deffacts databaze
  163. (zvirata afrika slon zebra zirafa opice antilopa pes)
  164. (zvirata asie tygr slon opice panda pes)
  165. (zvirata evropa pes zajic jelen kocka medved rys)
  166.  
  167. (nactena_volba))
  168.  
  169. (defrule zobraz_menu
  170. ?x <- (nactena_volba)
  171.  
  172. =>
  173. (retract ?x)
  174. (printout t "-----------------<NABIDKA>------------------" crlf)
  175. (printout t "Zjisti o zvireti, kde zije ... c" crlf)
  176. (printout t "Zjisti o psovi, kde zije ... e" crlf)
  177. (printout t "Zadej nove zvire do seznamu ... d" crlf)
  178. (printout t "Zjisti pocet druhu na kontinente ...f" crlf)
  179. (printout t "Konec programu ... k" crlf)
  180. (printout t "============================================" crlf)
  181.  
  182. (printout t "Zadejte svoji volbu:")
  183. (bind ?volba (read))
  184. (assert (moje_volba ?volba)))
  185.  
  186. ;----------
  187.  
  188. (defrule zrus_volbu_a
  189. ?x <- (moje_volba a)
  190. =>
  191. (retract ?x)
  192. (assert(nactena_volba)))
  193.  
  194. (defrule zadej_zvire
  195. (moje_volba c)
  196. =>
  197. (printout t "Zadejte druh zvirete:" crlf)
  198. (bind ?zvire (read))
  199. (assert (chci_zvire ?zvire)))
  200.  
  201. (defrule zisti_psa
  202. (moje_volba e)
  203. =>
  204. (assert (chci_zvire "pes")))
  205.  
  206. (defrule vypis_kontinent_pro_moje_zvire
  207. (chci_zvire ?x)
  208. (zvirata ?kontinent $?zvirata)
  209. (chci_zvire ?x&:(member$ ?x $?zvirata))
  210. =>
  211. (printout t ?x "-" ?kontinent crlf))
  212.  
  213.  
  214. (defrule zrus_volbu_c_a_moje_zvire
  215. (declare (salience -10))
  216. ?x <- (moje_volba c)
  217. ?y <- (chci_zvire ?nejake)
  218.  
  219. =>
  220. (retract ?x)
  221. (retract ?y)
  222. (assert (nactena_volba)))
  223.  
  224. (defrule zadej_kontinent_pro_nove_zvire
  225. (moje_volba d)
  226. =>
  227. (printout t "Zadejte nazev kontinentu kam vase zvire patri:" crlf)
  228. (bind ?k (read))
  229. (assert (nove_zvire_kontinent ?k)))
  230.  
  231.  
  232. (defrule zadej_zvire_pro_seznamX
  233. (nove_zvire_kontinent ?k)
  234. =>
  235. (printout t "Zadejte nove zvire:" crlf)
  236. (bind ?x (read))
  237. (assert (pridej_zvire ?x)))
  238.  
  239.  
  240. (defrule pridej_zvire_do_seznamu
  241. ?a <- (nove_zvire_kontinent ?zeme)
  242. ?b <- (pridej_zvire ?x)
  243.  
  244. ?staryseznam <- (zvirata ?zeme $?zvirata)
  245. =>
  246. (retract ?a ?b ?staryseznam)
  247. (assert(zvirata ?zeme ?zvirata ?x))
  248. (printout t "Zvire bylo pridano do seznamu !" crlf))
  249.  
  250.  
  251. (defrule kontinent_a_pocet_zvirat1
  252. (moje_volba f)
  253. =>
  254. (printout t "Zadejte nazev kontinentu:"crlf)
  255. (bind ?k (read))
  256. (assert (chci_kontinent ?k)))
  257.  
  258.  
  259. (defrule kontinent_a_pocet_zvirat2
  260. ?smazvolbu <- (moje_volba f)
  261. ?smazk <-(chci_kontinent ?k)
  262.  
  263. (zvirata ?k $?zvirata)
  264.  
  265. =>
  266. (bind ?x (length$ ?zvirata))
  267.  
  268. (printout t "Na kontinente-" ?k "je:" ?x "-zvirat" crlf)
  269. (retract ?smazk ?smazvolbu)
  270. (assert (nactena_volba)))
  271.  
  272. (defrule ukonci_program
  273. (moje_volba k)
  274. =>
  275. (printout t "Konec programu !" crlf))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement