Prolog e Programação em Lógica
- Material sobre Prolog na Página do COCA
- Apostila Prolog UFCG
- Livro de Prolog - Prof. Eloi Favero
- Lógica para Computação, Celso Kaestner
- Programação em Lógica - Lucilia Figueiredo
- Aula sobre Prolog
- Programação Declarativa
- Lógica - Implementando algoritmos lógicos PROLOG(swi Prolog) - pogMasters.net v.0.1
- Prolog Aplicações Avançadas
- Prolog Tutorials
- Prolog Guide - Prolog in Examples
- Prolog Guide - Prolog in Examples
- Guide to Prolog Programming
Sobre Testes de Unidades em Prolog (Prolog Unit Tests)
Como instalar o SWI-Prolog 5.6.55com Unit Tests no Ubuntu 8.04
Executar os comandos abaixo:
wget http://gollem.science.uva.nl/cgi-bin/nph-download/SWI-Prolog/binaries/pl-5.6.55-322.i586.rpm
sudo apt-get install alien
sudo alien -d pl-5.6.55-322.i586.rpmsudo apt-get install swi-prolog
sudo apt-get remove swi-prolog
sudo dpkg -i pl_5.6.55-322_i386.deb
Atualização em 27/06/2015:
Links quebrados:
Prezado amigo, li a sua dica sobre como instalar o Prolog no Ubuntu. Vou tentar um um netbook Acer Aspire One, com processador Intel Atom e 160GB de HD. A primeira tentativa falhou porque o site da gollem estava temporariamente "fora do ar".
ResponderExcluirAgora, diz uma coisa, neste pacote está incluído o guitracer, isto é, a interface gráfica de visualização do trace?
HJM
Caro Herli, infelizmente, no Linux, que eu saiba, não tem guitracer...
ResponderExcluiroi amigo tenho um problema em prolog para resolver e estou com muita dificuldade e preciso de ajuda aqui vai
ResponderExcluir1. Analise o seguinte trecho, extraído do livro “Harry Potter e a Pedra Filosofal”, de
J.K.Rowling, editora Rocco, 2000.
“Harry abriu a porta seguinte, os dois mal se atreviam a olhar o que vinha a seguir, mas não havia nada
muito assustador ali, apenas uma mesa e sobre ela sete garrafas de formatos diferentes.
— É o de Snape — disse Harry. — O que temos de fazer?
Ao cruzarem a soleira da porta, imediatamente irromperam chamas atrás deles. E não eram chamas
comuns tampouco, eram roxas. Ao mesmo tempo, surgiam chamas pretas na porta adiante. Estavam
encurralados.
— Olhe! — Hermione apanhou um rolo de papel que havia ao lado das garrafas. Harry espiou por cima
do seu ombro para ler o papel:
O perigo o aguarda à frente, a segurança ficou atrás,
Duas de nós o ajudaremos no que quer encontrar,
Uma das sete te deixará prosseguir,
A outra levará de volta quem a beber,
Duas de nós conterão vinho de urtigas;
Três de nós aguardam em fila para o matar,
Escolha, ou ficará aqui para sempre,
E para ajudá-lo, lhe damos quatro pistas:
Primeira, por mais dissimulado que seja o veneno,
Você sempre encontrará um à esquerda de um vinho
de urtigas;
Segunda, são diferentes as garrafas de cada
extremidade,
Mas se você quiser avançar nenhuma é sua amiga;
Terceira, é visível que temos tamanhos diferentes,
Nem anã nem giganta leva a morte no bojo;
Quarta, a segunda à esquerda e a segunda à direita
São gêmeas ao paladar, embora diferentes à vista.
Hermione deixou escapar um grande suspiro e Harry, perplexo, viu que ela sorria, a última coisa que ele
tinha vontade de fazer.
— Genial — disse — Isto não é mágica, é lógica...”
Ajude Harry e Hermione a impedir o Lorde das Trevas de voltar ao poder. Escreva um
programa em Prolog que resolva a charada de lógica acima e decida qual garrafa Harry deve
beber para seguir adiante.
Dica 1: Represente as 7 garrafas em uma lista. O seguintes predicados podem ajudar:
% Encontra uma permutação em uma lista
permutacao([],[]).
permutacao(L,[X|P]) :- apaga(X,L,L1), permutacao(L1,P).
apaga(X,[X|L],L).
apaga(X,[Y|L],[Y|L1]) :- apaga(X,L,L1).
% Encontra o índice de um dado elemento em uma lista
indice(X, [X|_], 0) :- !.
indice(X, [_|L], N) :- indice(X, L, N1), N is N1 + 1.
% Encontra o elemento em uma dada posição da lista
elemento(X, [X|_], 0) :- !.
elemento(X, [_|L], N) :- N1 is N - 1, elemento(X, L, N1).
% Retorna uma sublista a partir de uma posição fornecida
% Este predicado pode ser útil para implementar a recursividade na primeira
% pista, já que nela você vai precisar testar as posições de toda ocorrência
% de uma garrafa de vinho de urtigas.
sublista(L, 0, L) :- !.
sublista([_|L1], N, L2) :- N1 is N - 1, sublista(L1, N1, L2).
Dica 2: A autora não descreve no texto a disposição exata das garrafas na mesa, porém essa
informação é essencial para a resolução do problema. Assuma que as garrafas estão dispostas
conforme a sequência abaixo:
grande, gigante, média, anã, pequena, quadrada,