Monkey
Há uma sala onde se encontra um macaco posicionado na porta da sala, uma caixa do lado da janela e uma banana fixada no centro do teto da sala. O objetivo é que o macaco, utilizando a caixa, seja capaz de apanhar a banana.
%----------- Buscas ---------------------------------------------
Neste ponto se localiza as buscas de Largura e Profundidade cuja descrição
pode ser vista acessando sua página respectiva através da página principal.
Dessa forma é facilitada a visualização do trecho específico referente ao problema.
% ---------- Representação de Estados para o Problema ----------
% A ordem das respectivas posições relacionadas aos estados são: [macaco,macaco,caixa,macaco com relação a banana]
% Estado Inicial
estado_inicial([porta,chao,janela,sem_banana]).
% Estado Final
[centro,sobre_caixa,centro,com_banana] e_a_meta.
% Operações possíveis/permitidas para mudanças de estado.
operacao(pegar) transforma [centro,sobre_caixa,centro,sem_banana] em [centro,sobre_caixa,centro,com_banana].
operacao(subir) transforma [X,chao,X,B] em [X,sobre_caixa,X,B].
operacao(empurrar) transforma [X1,chao,X1,B] em [X2,chao,X2,B].
operacao(andar) transforma [X1,chao,Y,B] em [X2,chao,Y,B].
Resolução por busca em largura
| ?- resolva_bl.
Estado inicial: [porta,chao,janela,sem_banana].
andar: [janela,chao,janela,sem_banana].
empurrar: [centro,chao,centro,sem_banana].
subir: [centro,sobre_caixa,centro,sem_banana].
pegar: [centro,sobre_caixa,centro,com_banana].
yes
Resolução por busca em profundidade
| ?-
# 0.05 seconds to consult macaco.pl [d:\users\jaque\ia\]
| ?- resolva_bp.
Estado inicial: [porta,chao,janela,sem_banana].
andar: [janela,chao,janela,sem_banana].
empurrar: [centro,chao,centro,sem_banana].
subir: [centro,sobre_caixa,centro,sem_banana].
pegar: [centro,sobre_caixa,centro,com_banana].
yes