Métodos
de Programação III
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