4) { while ($ads2 == $ads1) { $ads2 = rand(1, $slides); } } $ads3 = rand(1, $slides); if ($slides > 4) { while (($ads3 == $ads2) || ($ads3 == $ads1)) { $ads3 = rand(1, $slides); } } ?>
INF1771 - INTELIGÊNCIA ARTIFICIAL  
LISTA DE EXERCÍCIOS 3  
Aluno:  
1. Expresse através de fatos e regras Prolog as informações contidas na seguinte frase:  
Marcelo é um pássaro. Silvio é um peixe. Ana é uma minhoca. Pássaros gostam de  
minhocas. Gatos gostam de peixes. Gatos gostam de pássaros. Amigos gostam uns dos  
outros. O meu gato é meu amigo. O meu gato come tudo o que gosta, exceto pessoas. O  
nome do meu gato é Chuck Norris.”  
2
. Expresse através de fatos e regras Prolog as informações contidas na seguinte frase:  
Maria é bonita. Marcos é rico e bonito. Ana é rica e forte. Fabiano é forte e bonito. Silvio  
é amável e forte. Todos os homens gostam de mulheres bonitas. Todos os homens ricos  
são felizes. Qualquer homem que gosta de uma mulher que gosta dele é feliz. Qualquer  
mulher que gosta de um homem que gosta dela é feliz. Ana gosta de qualquer homem que  
gosta dela. Maria gosta de qualquer homem que gosta dela, desde que ele seja rico,  
amável ou bonito, e forte.”  
3
. Considere a seguinte base de fatos em Prolog:  
aluno(joao, calculo).  
aluno(maria, calculo).  
aluno(joel, programacao).  
aluno(joel, estrutura).  
frequenta(joao, puc).  
frequenta(maria, puc).  
frequenta(joel, ufrj).  
professor(carlos, calculo).  
professor(ana_paula, estrutura).  
professor(pedro, programacao).  
funcionario(pedro, ufrj).  
funcionario(ana_paula, puc).  
funcionario(carlos, puc).  
Escreva as seguintes regras em Prolog:  
a) Quem são os alunos do professor X?  
b) Quem são as pessoas que estão associadas a uma universidade X? (alunos e  
professores)  
4
. Suponha os seguintes fatos:  
nota(joao,5.0).  
nota(maria,6.0).  
nota(joana,8.0).  
nota(mariana,9.0).  
nota(cleuza,8.5).  
nota(jose,6.5).  
nota(jaoquim,4.5).  
nota(mara,4.0).  
nota(mary,10.0).  
Considerando que:  
Nota de 7.0 á 10.0 = Aprovado.  
Nota de 5.0 á 6.9 = Recuperação.  
Nota de 0.0 á 4.9 = Reprovado.  
Escreva uma regra para identificar a situação de um determinado aluno.  
5
. Crie uma base de conhecimento em Prolog declarando os fatos representados na seguinte  
tabela:  
5
.1 Escreva regras genéricas em Prolog que possam responder as seguintes perguntas:  
a) Quem dirigiu o filme Titanic?  
b) Quais são os filmes de suspense?  
c) Quais os filmes dirigidos por Donner?  
d) Em que ano foi lançado o filme Sinais?  
e) Quais os filmes com duração inferior a 100min?  
f) Quais os filmes lançados entre 2000 e 2005?  
5
.2 Usando as regras criadas anteriormente construa o predicado clássico, que retorna o  
título dos filmes lançados antes de 1980.  
5
.3 Usando as regras criadas anteriormente construa o predicado gênero, que retorna o  
título dos filmes de um gênero específico.  
5
.4 Usando os predicados clássicoe gênerofaça uma consulta para recuperar os  
títulos de filmes clássicos de suspense.  
6
. Quais das próximas operações de unificação serão bem sucedidas e quais irão falhar? Para  
as que forem bem sucedidas, quais são as instanciações de variáveis resultantes?  
a) ponto(A, B) = ponto(1, 2)  
b) 2 + 2 = 4  
c) ponto(A, B) = ponto(X, Y, Z)  
d) mais(2, 2) = 4  
e) +(2, D) = +(E, 2)  
f) t(p(-1,0), P2, P3) = t(P1, p(1, 0), p(0, Y))  
7
. Represente em Prolog os seguintes predicados genéricos sobre listas:  
a) adiciona(X,L1,L2)onde X é o elemento que será adicionado na lista L1. L2 é a  
lista retornada.  
b) remover(X, L1, L2)onde X é o elemento que deve ser removido da lista L1. L2 é a  
lista resultante sem o elemento X.  
c) inverte(L1, L2) onde L1 é a lista que deve ser invertida e L2 é a lista resultante.  
d) tamanho(L1, X)onde X deve retornar o tamanho (numero de elementos da lista  
L1.  
e) soma(L1, X)onde X deve retornar a soma de todos os elementos da lista L1.