Exercício do Exame de Final de 1998: Problema

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.


(c) Delfim F. Marado Torres
1999-04-13