Exemplo: Macaco e as Bananas
move(
estado(no_centro, acima_caixa, no_centro, não_tem),
pegar_banana,
estado(no_centro,acima_caixa,no_centro,tem)
).
move(
estado(P,no_chão,P,Banana),
subir,
estado(P,acima_caixa,P,Banana)
)
.
move(
estado(P1,no_chão,P1,Banana),
empurrar(P1,P2),
estado(P2,no_chão,P2,Banana)
)
.
move(
estado(P1,no_chão,Caixa,Banana),
caminhar(P1,P2),
estado(P2,no_chão,Caixa,Banana)
)
.
consegue(estado(_,_,_,tem),[]).
consegue(Estado1,[Movimento|Resto]) :- move(Estado1,Movimento,Estado2), consegue(Estado2,Resto).