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 4  
Aluno:  
1. Expresse através de fatos e regras Prolog as informações contidas na seguinte frase:  
João é um pássaro. Pedro é um peixe. Maria é 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:  
“Cassia é 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. Cassia 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.