Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (deffacts stiva-initiala "AsezareInitiala"
- (este-bloc A)
- (este-bloc B)
- (este-bloc C)
- (este-bloc D)
- (este-bloc E)
- (este-bloc F)
- (pe A B)
- (pe B C)
- (pe C podea)
- (pe D E)
- (pe E F)
- (pe F podea)
- (pe nimic A)
- (pe nimic D)
- (scop muta C pe E)
- )
- (defrule mutare-directa "aceasta regula intra in executie cand sursa si destinatia sunt libere si destinatia este un bloc"
- ?scop <- (scop muta ?bloc1 pe ?bloc2)
- (este-bloc ?bloc1)
- (este-bloc ?bloc2)
- (pe nimic ?bloc1)
- ?stiva1 <- (pe nimic ?bloc2)
- ?stiva2 <- (pe ?bloc1 ?bloc3)
- =>
- (retract ?scop ?stiva1 ?stiva2)
- (assert (pe ?bloc1 ?bloc2) (pe nimic ?bloc3) )
- (printout t "blocul " ?bloc1 " este mutat pe blocul " ?bloc2 crlf )
- )
- (defrule mutare-pe-podea "aceasta regula intra in executie cand un bloc trebuie mutat pe podea si blocul respectiv este liber"
- ?scop <- (scop muta ?bloc1 pe podea)
- (este-bloc ?bloc1)
- (pe nimic ?bloc1)
- ?stiva <- (pe ?bloc1 ?bloc2)
- =>
- (retract ?scop ?stiva)
- (assert (pe ?bloc1 podea) (pe nimic ?bloc2) )
- (printout t " blocul " ?bloc1 " este mutat pe podea" crlf)
- )
- (defrule eliberare-sursa "aceasta regula intra in executie cand un bloc trebuie mutat undeva si deasupra sa se afla alt bloc"
- (scop muta ?bloc1 pe ?)
- (este-bloc ?bloc1)
- (pe ?bloc2 ?bloc1)
- (este-bloc ?bloc2)
- =>
- (assert (scop muta ?bloc2 pe podea) )
- )
- (defrule eliberare-destinatie "intra in executie cand destinatia are un bloc deasupra"
- (scop muta ? pe ?bloc2)
- (este-bloc ?bloc2)
- (pe ?bloc3 ?bloc2)
- =>
- (assert (scop muta ?bloc3 pe podea))
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement