documentl4

4
 1 L4_p1 (deffacts BLOCURI-SI-STRU CTURA (pe nimic A) (pe nimic D) (pe A B) (pe B C) (pe D E) (pe E F) (pe F podea) (pe C podea) (este-bloc A) (este-bloc B) (este-bloc C) (este-bloc D) (este-bloc E) (este-bloc F) ) (deffacts SCO PURI "aici rulam programul, in functie de ce sc op vrem" ;(scop muta B pe D) ; merge! ;(scop muta B pe A) ; merge! ;(scop muta nimic pe F) ; merge! ;(scop muta C pe podea) ; merge! (scop muta C pe D) ; vezi L4_P2.clp pentru ca mutarea sa fie 100% corecta ;-) ) (defrule MUTARE-DIR ECTA ?scop <- (scop muta ? sursa pe ?de stinatie) (este-bloc ?sursa) (este-bloc ?destinatie) (pe nimic ?sursa) ?structura_veche1 <- (pe nimic ?destinatie) ?structura_veche2 <- (pe ? sursa ?bloc_ramas_dupa_mutarea_sursei) => (retract ?scop ?structura_veche1 ?structura_vec he2) (assert (pe ?sursa ?destinatie) (pe nimic ?bloc_ramas_dupa_mutarea_sursei)) (printout t "------------------------------------------------------- ----" crlf) (printout t "s-a mutat blocul " ?s ursa " pe blocul " ?destinatie crlf) (printout t "------------------------------------------------------- ----" crlf) ) (defrule MUTARE-PE-PODEA ?scop <- (scop muta ? sursa pe podea ) (este-bloc ?sursa) (pe nimic ?sursa) ?structura_veche1 < - (pe ?sursa ? bloc_sub_sursa) => (retract ?scop ?structura_veche1) (assert (pe ?sursa podea) (pe nimic ?bloc_sub_sursa)) (printout t "------------------------------------------------------- ----" crlf) (printout t "s-a mutat blocul " ?sursa " pe pod ea." crlf) (printout t "------------------------------------------------------- ----" crlf) ) (defrule ELIBERARE-SU RSA (scop muta ?sursa pe ?) (este-bloc ?sursa) (pe ?bloc_deasupra_sursei ?sursa) (este-bloc ?bloc_deasupra_surse i) => (assert (s cop muta ?bloc_dea supra_sursei pe podea)) ) (defrule ELIBERARE-DE STINATIE (scop muta ? pe ?destinatie) (este-bloc ?destinatie) (pe ?bloc ?destinatie) (este-bloc ?bloc) => (assert (scop muta ?bloc pe podea)) ) L4_p2 (deffacts SCOPURI "aici rulam programul, in functie de ce scop vrem" ;(scop muta B pe D) ; merge! ;(scop muta B pe A) ; merge! ;(scop muta nimic pe F) ; merge! ;(scop muta C pe podea) ; merge! ;(scop muta C pe D) ; merge! ;(scop muta B pe E) ; merge! ;(scop muta nimic pe C) ; merge! ;(sc op muta nimi c pe pode a) ; nu mer ge, dar a sa e si normal :) ;(scop muta F pe E) ; merge! ;(scop muta F pe C) ; merge! (scop muta A pe D) ) (defrule MUTARE-DIRE CTA ?scop <- (scop muta ?sursa pe ?destinatie) (este-bloc ?sursa) (este-bloc ?destinatie) (pe nimic ? sursa ) ?structura_veche 1 <- (pe nimic ?destinatie) ?structura_veche 2 <- (pe ? sursa ?bloc_ramas_dupa_mutarea_sursei) (este-bloc ?bloc_rama s_dupa_mutarea_sursei) => (retract ?scop ?structura_veche 1 ?structura_vec he2) (assert (pe ?sursa ?destinatie) (pe nimic ?bloc_ramas_dupa_mutarea_sursei)) (printout t "------------------ ------------------ ------------------- ----" crlf) (printout t "s-a mutat blocul " ?sursa " pe blocul " ?destinatie ". (mutare directa)" crlf) (printout t "------------------ ------------------- ------------------ ----" crlf crlf) ) (defrule MUTARE-DE-PE-POD EA ?scop <- (scop muta ?sursa pe ?destinatie) (este-bloc ?sursa) (este-bloc ?destinatie) ?old1 <- (pe nimic ?surs a) ?old2 <- (pe nimic ?des tinatie) ?old3 <- (pe ?s ursa p odea) => (retract ?scop ?old1 ?old2 ?old3) (assert (pe ?sursa ?destinatie) (pe nimic ?sursa)) (printout t "------------------ ------------------ ------------------- ----" crlf) (printout t "s-a mutat in mod corect blocul " ?sursa " pe " ?destinatie ". (mutare de pe podea)" crlf)

Upload: popikal

Post on 06-Oct-2015

216 views

Category:

Documents


0 download

DESCRIPTION

l4

TRANSCRIPT

  • 1L4_p1(deffacts BLOCURI-SI-STRUCTURA

    (pe nimic A)(pe nimic D)(pe A B)(pe B C)(pe D E)(pe E F)(pe F podea)(pe C podea)(este-bloc A)(este-bloc B)(este-bloc C)(este-bloc D)(este-bloc E)(este-bloc F)

    )

    (deffacts SCOPURI "aici rulam programul, in functie de ce scopvrem"

    ;(scop muta B pe D) ; merge!;(scop muta B pe A) ; merge!;(scop muta nimic pe F) ; merge!;(scop muta C pe podea) ; merge!(scop muta C pe D) ; vezi L4_P2.clp

    pentru ca mutarea sa fie 100% corecta ;-))

    (defrule MUTARE-DIRECTA?scop (assert (scop muta ?bloc_deasupra_sursei pe podea))

    )

    (defrule ELIBERARE-DESTINATIE(scop muta ? pe ?destinatie)(este-bloc ?destinatie)(pe ?bloc ?destinatie)(este-bloc ?bloc)=>(assert (scop muta ?bloc pe podea))

    )

    L4_p2

    (deffacts SCOPURI "aici rulam programul, in functie de ce scopvrem"

    ;(scop muta B pe D) ; merge!;(scop muta B pe A) ; merge!;(scop muta nimic pe F) ; merge!;(scop muta C pe podea) ; merge!;(scop muta C pe D) ; merge!;(scop muta B pe E) ; merge!;(scop muta nimic pe C) ; merge!;(scop muta nimic pe podea) ; nu merge, dar asa e si

    normal :);(scop muta F pe E) ; merge!;(scop muta F pe C) ; merge!(scop muta A pe D)

    )

    (defrule MUTARE-DIRECTA?scop

  • 2(printout t "-----------------------------------------------------------" crlf crlf))

    (defrule MUTARE-PE-PODEA?scop (assert (scop muta ?bloc_deasupra_sursei pe podea))

    )

    (defrule ELIBERARE-DESTINATIE(scop muta ? pe ?destinatie)(este-bloc ?destinatie)(pe ?bloc ?destinatie)(este-bloc ?bloc)=>(assert (scop muta ?bloc pe podea))

    )

    L4_p3

    (deffacts STIVA(stiva 5 -4 0.02 wow);(stiva 1 5 9)

    )

    (deffacts SCOPURI(push -8);(pop)

    )

    (defrule INTRODUCERE-VALOARE?adresa

  • 3(defrule SCOATE-DIN-COADA-CU-MAI-MULTE-ELEMENTE?a (assert (scop muta ?bds pe podea))

    )

    (defrule ELIBERARE-DESTINATIE(scop muta ? pe ?bd)(stiva $?r1 ?bdd ?bd $?r2)=>(assert (scop muta ?bdd pe podea))

    )

    L4_p7MERGE PERFECT

    (deffacts STARE-INITIALA(stiva A B C D)(stiva E F G)

    )

    (deffacts SCOPURI;(scop muta C pe G) ; merge;(scop muta G pe A) ; merge;(scop muta G pe D) ; merge;(scop muta G pe B) ; merge;(scop muta G pe C) ; merge;(scop muta F pe A) ; merge;(scop muta F pe D) ; merge;(scop muta F pe B) ; merge;(scop muta F pe C) ; merge;(scop muta E pe A) ; merge;(scop muta E pe B) ; merge;(scop muta E pe C) ; merge;(scop muta E pe D) ; merge;(scop muta D pe podea) ; merge;(scop muta A pe podea) ; merge;(scop muta B pe podea) ; merge;(scop muta C pe podea) ; merge(scop muta F pe podea)

    )

  • 4(defrule MUTARE-DIRECTA?scop