Universidade de São Paulo
Instituto de Ciências Matemáticas e de Computação
Departamento de Ciências da Computação e Estatística
Primeiro Semestre de 1999
SCE 5774 - Introdução à Inteligência Artificial
Primeiro Projeto - Entrega: 7/4
Seguem abaixo 19 projetos. Escolha um e resolva individualmente.
Eles serão julgados de acordo com os seguintes critérios:
?- main.
NANI SEARCH - A Sample Adventure Game
Copyright (C) Amzi! inc. 1990-1995
No rights reserved, use it as you wish
Nani Search is designed to illustrate Prolog programming.
As such, it might be the simplest adventure game. The game
is the primary example used in APT - The Active Prolog Tutor.
Full source is included as well.
Your persona as the adventurer is that of a three year
old. The Nani is your security blanket. It is getting
late and you're tired, but you can't go to sleep
without your Nani. Your mission is to find the Nani.
You control the game by using simple English commands
expressing the action you wish to take. You can go to
other rooms, look at your surroundings, look in things
take things, drop things, eat things, inventory the
things you have, and turn things on and off.
Hit any key to continue.
:- op(500,xfx,'e_um_dos_pais_de').
a e_um_dos_pais_de b.
a e_um_dos_pais_de c. ...
?- localize(n).
a --> c --> h --> n
?- go.
Does the animal have the following attribute: has_hair? yes.
Does the animal have the following attribute: eats_meat? yes.
Does the animal have the following attribute: has_tawny_color? yes.
Does the animal have the following attribute: has_dark_spots? no.
Does the animal have the following attribute: has_black_stripes? no.
Does the animal have the following attribute: has_hooves? yes.
Does the animal have the following attribute: has_long_neck? yes.
Does the animal have the following attribute: has_long_legs? yes.
I guess that the animal is: giraffe
yes
?- gerador_tabelas(x or (not y and z)).
[x,y,z] x or (not y and z)
-----------------------------------
[0,0,0] 0
[0,0,1] 1
[0,1,0] 0
[0,1,1] 0
[1,0,0] 1
[1,0,1] 1
[1,1,0] 1
[1,1,1] 1
-----------------------------------
-------is a -------.
A ----- is a ------.
Is ------a---------?
?- vinte_e_um([3,7],T,21).
T = 3 * 7 ;
T = (- 3) * (- 7) ;
no
Ou ainda:
?- vinte_e_um([1,5,6,7],T,18).
T = 7 + (6 + 1 * 5) ;
T = 7 + (6 + (- 1) * (- 5)) ;
no
Utilize parênteses e as operações básicas de adição, negação (que pode substituir a subtração), multiplicação, e divisão somente.
These are the rules for membership of a very snobbish club.
A person applying for membership of the Ballymucknacreevy Jetsetter's Club
(hereinafter referred to as the applicant) will be deemed acceptable for
membership provided the applicant has been proposed by two other persons
(hereinafter referred to as the proposers), each of whom is qualified to
propose the aforementioned applicant and provided the applicant is eligible
for membership under the terms below.
The applicant must be less than 40 years of age.
A proposer is not qualified to propose a potential applicant if he or
she earns less than $40,000 or of he or she has been a member of the
Club for less than two years.
A proposer may not be a parent of the applicant.
An applicant is eligible for membership if his or her annual salary
is not less than $50,000. Alternatively, an applicant earning not
less than $30,000 will be eligible provided a parent of the applicant
would be eligible for membership under the above rules.
estado = [[a,b,c],[d],[e,f]] ==> a
b e
c d f
----------
Escreva um programa imprime(estado) que imprime um dado Estado na forma visual acima.
Tweety é um pássaro. Goldie é um peixe. Squiggly é uma minhoca. Pássaros gostam de minhoca. Gatos gostam de peixe. Gatos gostam de pássaros. Amigos se gostam. Meu gato é meu amigo. Meu gato come tudo o que ele gosta.
Pergunta: O que come meu gato?
Crie outra descrição similar, traduza para PROLOG e faça perguntas pertinentes.
Quando Alice entrou na "Floresta Encantada", ela não se esqueceu de tudo, somente de algumas coisas. Uma das coisas que ela mais facilmente esquece é o dia da semana.
O leão e o unicórnio são duas criaturas bastante estranhas, que também freqüentam a Floresta Encantada. É sabido que o leão mente nas segundas, terças e quartas e fala a verdade nos outros dias da semana, enquanto que o unicórnio mente nas quintas, sextas e sábados, mas fala a verdade nos outros dias da semana.
Um dia Alice encontrou o leão e o unicórnio descansando sob uma árvore, e pergunta a ambos qual o dia da semana e recebe as seguintes respostas:
Leão: Ontem foi meu dia de mentir.
Unicórnio: Ontem foi meu dia de mentir.
Diante destas declarações, Alice, que era uma garota inteligente , verificou que poderia deduzir o dia da semana. Qual é o dia?
Desenvolva em Prolog o programa correspondente.
Represente grafos em Prolog, considerando que eles tenham comprimento. Escreva um programa para calcular os caminhos mais curtos entre 2 pontos.
** S E N D
** + M O R E
** ---------
** M O N E Y
O objetivo deste jogo é atribuir um digito a cada letra em SEND e MORE e então adicionar aqueles valores como um problema matemático normal e obter MONEY como uma resposta. Faça um programa genérico, com a restrição de que 2 números para serem adicionados tenham o mesmo número de dígitos e a solução um digito a mais (veja que send e more tem 4 dígitos e money 5). Outra entrada:
[C,R,O,S,S] + [R,O,A,D,S] = [D,A,N,G,E,R].
Represente em Prolog os fatos que descrevem as relações entre os blocos. Use dois predicados: um deles para indicar que um bloco está sobre outro bloco e outro para indicar que um bloco está imediatamente à esquerda de outro bloco. Para os blocos que estão sobre a mesa, defina somente fatos do segundo tipo.
Faça as seguintes perguntas:
Defina o predicado acima(X,Y) e pilha_esquerda(X,Y) recursivos. Gere perguntas pertinentes.
17) Troco para um dolar. Faça um programa para gerar ou checar troco para um dólar consistindo de half-dollars, quarters, dimes, nickels, e pennies. Faça perguntas como:
?- troco([H,Q,D,N,P]).
para listar todos os possíveis meios de dar o troco.
p --> (q and not r) deve ser p and (not q or r).