Métodos de Programação III
1998/99
Engenharia de Sistemas e Informática
Matemática e Ciências da Computação
 

Programa em Prolog
(de Luis Fraga)


/*
Resolucao para o problema do macaco/bananas
encontrada no livro "PROLOG by example".

O predicado "plano/2" constroi uma lista com as todas as accoes necessarias para
passar de um estado para outro.
Considera-se "entra_quarto" o estado inicial e "apanha_bananas" o estado final.
*/

plano(E,E,[]).
plano(Einicial,Efinal,[Accao|Accoes]):-
        o_que_fazer(Einicial,Eintermedio,Accao),
        plano(Eintermedio,Efinal,Accoes).

/*
O predicado "o_que_fazer/3" indica a accao que e necessario efectuar
para fazer a transicao entre dois estados seguidos.
*/

o_que_fazer(entra_quarto,estado(macaco,bananas,caixote),inicio).
o_que_fazer(estado(Y,Y,Y),apanha_bananas,sobe).
o_que_fazer(estado(X,Y,X),estado(Y,Y,Y),leva(X,Y)).
o_que_fazer(estado(X,Y,Z),estado(Z,Y,Z),desloca_se(X,Z)).

/*
A query "?- plano(entra_quarto,apanha_bananas,Plano)."
vai produzir o resultado pretendido.
*/
 

Enviar comentários para jas@di.uminho.pt.
Ultima modificação: 3/12/1998