Nas aulas teórico-práticas foi sugerida a seguinte solução para o problema do macaco e das bananas:
accao(situacao(centro,cima_caixa,centro,nao_tem),
apanhar,
situacao(centro,cima_caixa,centro,tem)).
accao(situacao(P,chao,P,TN),
subir,
situacao(P,cima_caixa,P,TN)).
accao(situacao(P1,chao,P1,TN),
empurrar(P1,P2),
situacao(P2,chao,P2,TN)).
accao(situacao(P1,chao,C,TN),
andar(P1,P2),
situacao(P2,chao,C,TN)).
% cumpre_obj(S) <=> macaco pode obter banana partindo de S
cumpre_obj(situacao(_,_,_,tem)).
cumpre_obj(E) :-
accao(E,A,S),
cumpre_obj(S).
Depois de fazer o 'consult' do ficheiro, bastava perguntar ao interpretador:
?- cumpre_obj(situacao(porta,chao,janela,nao_tem)).
yes
Com este exercício pretende-se que alterem o programa acima, de modo a sabermos qual a
solução ``que o macaco encontra'' para apanhar a banana.