Posts Tagged ‘Forme geometrice’

h1

Laboratorul 1

martie 12, 2009

Varianta 1
(deffacts a
(forma patrulater)
(unghi drept)
(laturi egale)
)
(defrule patrat
(forma patrulater)
(unghi drept)
(laturi egale)
=>
(assert (patrat))
)
(defrule dreptunghi
(forma patrulater)
(unghi drept)
(not (laturi egale))
=>
(assert (dreptunghi))
)
(defrule trapez
(forma patrulater)
(not (unghi drept))
(not (laturi egale))
=>
(assert (trapez))
)
(defrule altceva
(not (forma patrulater))
(not (unghi drept))
(not (laturi egale))
=>
(assert (altceva))
)
(defrule romb
(forma patrulater)
(not (unghi drept))
(laturi egale)
=>
(assert (romb))
)

Varianta 2
(deffacts a (patrulater da) (laturiegale nu) (unghidrept da))
(defrule test1D (patrulater da) => (assert (dotest2)))
(defrule test1N (patrulater nu) => (assert (altceva)))
(defrule test2D (dotest2)(unghidrept da) => (assert (dotest3)))
(defrule test2N (dotest2) (unghidrept nu) => (assert (dotest4)))
(defrule test3D (dotest3) (laturiegale da) => (assert (patrat)))
(defrule test3N (dotest3) (laturiegale nu) => (assert (dreptunghi)))
(defrule test4D (dotest4) (laturiegale da) => (assert (romb)))
(defrule test4N (dotest4) (laturiegale nu) => (assert (trapez)))

Varianta 3
(deffacts s (forma patrulater) (unghiuri drepte))
(defrule a (forma patrulater) => (assert (unghi)))
(defrule b (not (forma patrulater)) => (assert (altceva)))
(defrule c (unghi) (or (unghiuri drepte) (not (unghiuri drepte))) => (assert (laturi)))
(defrule e (laturi) (laturi egale) (unghiuri drepte) => (assert (patrat)))
(defrule f (laturi) (laturi egale) (not(unghiuri drepte)) => (assert (trapez)))
(defrule d (laturi) (not (laturi egale)) (unghiuri drepte) => (assert (dreptunghi)))
(defrule g (laturi) (not(laturi egale)) (not(unghiuri drepte)) => (assert (patrat)))

Varianta 4
(deffacts f
(forma patrulater)
(unghiuri nedrepte)
(laturi inegale)
)

(defrule patrat
(forma patrulater)
(unghiuri drepte)
(laturi egale)
=>
(assert (patrat))
)

(defrule dreptunghi
(forma patrulater)
(unghiuri drepte)
(laturi inegale)
=>
(assert (dreptunghi))
)

(defrule romb
(forma patrulater)
(unghiuri nedrepte)
(laturi egale)
=>
(assert (romb))
)

(defrule trapez
(forma patrulater)
(unghiuri nedrepte)
(laturi inegale)
=>
(assert (trapez))
)

(defrule altceva
(forma nepatrulater)
(unghiuri nedrepte)
(laturi inegale)
=>
(assert (altceva))
)

Varianta 5
(deffacts fapte
(forma patrulater)
)

(defrule r1
?f
(assert (unghiuridrepte))
(retract ?f)
)

(defrule r2
(unghiuridrepte)
=>
(assert (laturiegale))
)

(defrule r3
?l
(assert (patrat))
(retract ?l)
)

(defrule r4
(not(laturiegale))
?u
(assert (dreptunghi))
(retract ?u)
)

(defrule r5
(not(unghiuridrepte))
=>
(assert (laturiegale2))
)

(defrule r6
?le
(assert (romb))
(retract ?le)
)

(defrule r7
(not(laturiegale2))
=>
(assert (trapez))
)

(defrule r8
(not(forma patrulater))
=>
(assert (altceva))
)

Varianta 6
(deffacts fapte
(forma patrulater)
(unghiuri drepte)
(laturi neegale)
)

(defrule r1
?f
(assert (unghiuridrepte))
(retract ?f)
)

(defrule r2
?u<-(unghiuridrepte)
?u2
(assert (laturiegale1))
(retract ?u)
(retract ?u2)
)
(defrule r3
?u
(assert (laturiegale2))
(retract ?u)
)

(defrule r4
?l<-(laturiegale1)
?l2
(assert (patrat))
(retract ?l)
(retract ?l2)
)

(defrule r5
?l
(assert (dreptunghi))
(retract ?l)
)

(defrule r6
?l
(assert (romb))
(retract ?l)
)

(defrule r7
?l
(assert (trapez))
(retract ?l)
)

(defrule r8
(not (or (patrat) (dreptunghi) (trapez) (romb)))
=>
(assert (altceva))
)

Varianta 7
(deffacts fapte
(patrulater da)
(unghiuri da)
(laturi nu)
)

(defrule r1
(patrulater da)
=>
(assert (unghi))
)

(defrule r2
(unghi)
=>
(assert (laturi))
)

(defrule r3
(laturi)
(unghiuri da)
(laturi da)
=>
(assert (patrat))
)

(defrule r4
(laturi)
(unghiuri da)
(laturi nu)
=>
(assert (dreptunghi))
)

(defrule r5
(laturi)
(unghiuri nu)
(laturi da)
=>
(assert (romb))
)

(defrule r6
(laturi)
(unghiuri nu)
(laturi nu)
=>
(assert (trapez))
)

(defrule reg7
(patrulater nu)
=>
(assert (altceva))
)

Varianta 8
(deffacts fapte (stareinitiala))
(defrule patrulater
(stareinitiala)
=>
(printout t “Este patrulater?”)
(assert (patrulater (read)))
)
(defrule unghiuridrepte
(patrulater da)
=>
(printout t “Are ungiuri drepte?”)
(assert (unghiuridrepte (read)))
)
(defrule laturiegale
(unghiuridrepte ?)
=>
(printout t “Are laturi egale?”)
(assert (laturiegale (read)))
)
(defrule patrat
(unghiuridrepte da)
(laturiegale da)
=>(printout t “Este patrat!”)
)
(defrule dreptughi
(unghiuridrepte da)
(laturiegale nu)
=>(printout t “Este dreptunghi!”)
)
(defrule romb
(unghiuridrepte nu)
(laturiegale da)
=>(printout t “Este romb!”)
)
(defrule trapez
(unghiuridrepte nu)
(laturiegale nu)
=>(printout t “Este trapez!”)
)
(defrule altceva
(patrulater nu)
=>(printout t “Este altceva!”)
)