Documente Academic
Documente Profesional
Documente Cultură
-------------------------------------------
clauses
likes(ellen, tennis).
likes(john, football).
likes(tom, baseball).
likes(eric, swimming).
likes(mark, tennis).
likes(bill, Activity) if likes(tom, Activity).
=================================================================
Problema 2.
Exista 2 personae carora le plac anumite masini si le pot cumpara doar daca sunt
pentru vanzare. Despre aceste personae stim urmatoarele:
Numele persoanelor sunt Kelly si judy.
Lui Kelly ii place hot_rod.
Lui judy ii place pizza.
Ele pot cumpara doar daca sunt personae, obiectul cumparat este o masina, le
place acea masina iar masina este de vanzare.
Despre masini stim urmatoarele lucruri:
Hot_rod este o masina.
Lemon este o masina.
Lemon este de vanzare.
Hot_rod este de vanzare.
Mai avem un obiect numit pizza care este de vanzare.
car(symbol)
likes(symbol, symbol)
for_sale(symbol)
clauses
can_buy(X, Y) :-
person(X),
car(Y),
likes(X, Y),
for_sale(Y).
person(kelly).
person(judy).
car(lemon).
car(hot_rod).
likes(kelly, hot_rod).
likes(judy, pizza).
for_sale(pizza).
for_sale(lemon).
for_sale(hot_rod).
================================================================
Problema 3.
Avem o biblioteca cu carti. Cartile au un titlu si un nr de pagini. Ele sunt
scrise de un autor si au primit un titlu. In biblioteca avem si nuvele lungi
care au un titlu. Stim anumite lucruri despre carti si nuvelele lungi:
Fleming a publicat titlul “DR NO”.
Melville a publicat titlul “MOBY DICK”.
“MOBY DICK” are 250 de pagini.
“DR NO” are 310 pagini.
O carte este o nuvela lunga daca are titlu, a fost scrisa de un autor avand
acelasi titlul si este o carte cu un numar de pagini mai mare de 300.
predicates
book(title, pages)
written_by(author, title)
long_novel(title)
clauses
written_by(fleming, "DR NO").
written_by(melville, "MOBY DICK").
book("MOBY DICK", 250).
book("DR NO", 310).
long_novel(Title) :-
written_by(_, Title),
book(Title, Length),
Length > 300.
=================================================================
Problema 4.
Avem un fastfood care serveste pizza si brussels_sprouts. Cunoastem
urmatoarele lucruri:
Unei personae ii place ceva.
Ceva are un anumit gust.
Si avem mancare.
Lui bill ii place ceva daca este mancare si are un gust bun.
Pizza are gust bun.
Brussels_sprouts au gust rau.
Brussels_sprouts este o mancare.
Pizza este o mancare.
clauses
likes(bill, X) :-
food(X), tastes(X, good).
tastes(pizza, good).
tastes(brussels_sprouts, bad).
food(brussels_sprouts).
food(pizza).
===========================================================
Problema 5.
Avem personae si lucruri despre care se cunosc.
Unei personae ii place un lucru.
O persoana citeste.
O persoana este curioasa.
Lui john ii place wine.
Lui lane ii place skiing.
Cuiva ii plac books daca acel cineva citeste si este curios.
Lui lance ii plac books.
Lui lance ii plac films.
John citeste.
John este curios.
domains
name, thing = symbol
predicates
likes(name, thing)
reads(name)
is_inquisitive(name)
clauses
likes(john, wine).
likes(lance, skiing).
likes(Z, books) :-
reads(Z), is_inquisitive(Z).
likes(lance, books).
likes(lance, films).
reads(john).
is_inquisitive(john).
======================================================
Problema 6.
Avem o gradina zoologice despre care se cunosc:
Avem tipuri de animale.
Ceva este ceva.
Ceva traieste.
Ceva poate inota.
/’ avem o sectiune goal care va returna la rulare acelasi rezultat daca vom rula
codul de mai jos, in acest caz va rezulta “A shark can swim’/
Ungulate este un tip de animal.
Fish este un tip de animal.
Zebra este un ungulate.
Herring este un fish.
Shark este un fish.
Zebra traieste on_land.
Frog traieste on_land.
Frog traieste in_water.
Shar traieste in_water.
O creatura poate inota daca este un tipul lui este un animal si traieste in apa.
Pentru a Evita returnarea “a shark can swim” vom sterge sectiunea de goal.
1.sa se verifice daca frog poate swim.(no)
2. sa se verifce daca shark poate swim.(yes)
3. sa se verifce daca zebra este fish.(no)
4. sa se verifice daca shark este animal.(no)
5. sa se verifice daca shark traieste in_water.(yes)
predicates
type(symbol, symbol)
is_a(symbol, symbol)
lives(symbol, symbol)
can_swim(symbol)
goal
can_swim(What) ,
write("A ", What, " can swim.").
clauses
type(ungulate, animal).
type(fish, animal).
is_a(zebra, ungulate).
is_a(herring, fish).
is_a(shark, fish).
lives(zebra, on_land).
lives(frog, on_land).
lives(frog, in_water).
lives(shark, in_water).
can_swim(Y) :-
type(X, animal) ,
is_a(Y, X) ,
lives(Y, in_water).
==============================================================
Problema 7.
Avem o reprezenta de masini in care se cunosc urmatoarele lucruri:
Se poate cumpara o masina de un anumit model si culoare.
O masina este reprezentata de mode, culoare si un pret.
Culoare este reprezenta de numele culorii si un adjective.
Se poate cumpara o masina de un model si o culoare daca masina are un model,
culoare sip ret, culoare este sexy si pretul este mai mic de 25000.
Avem o masina maserati verde la un pret de 25000.
Avem o masina corvette negru la un pret de 24000.
Avem o masina corvette rosie la un pret de 26000.
Avem o masina porshe rosie la un pret de 24000.
Avem o culoare rosie sexy.
Avem o culoare neagra rea.
Avem o culoare verde ingrijit.
predicates
buy_car(symbol, symbol)
car(symbol, symbol, integer)
colors(symbol, symbol)
clauses
buy_car(Model, Color) :-
car(Model, Color, Price),
colors(Color, sexy),!,
Price < 25000.
clauses
action(1):-
write("You type 1.").
action(2):-
write("You typed two.").
action(3):-
write("Three is what you typed.").
action(X):-
X<>1, X<>2, X<>3,
write("I don't know that number!").
goal
write("Type a number from 1 to 3: "),
readreal(Choice), /* readreal (integer) reads only an integer */
action(Choice). /* binds Choice to the integer typed *//*
============================================================================
Problema 9.
Avem un grup de personae despre care stim:
Doua personae pot fi prietene.
O persoana poate fi fata.
O persoana place alta persoana.
Bill si jane sunt prieteni daca jane este o fata iar lui bill ii place de jane.
Bill si jim sunt prieteni daca lui jim ii place baseball.
Bill si sue sunt prieteni daca sue este fata.
Mary este fata.
Jane este fata.
Sue este fata.
Lui jim ii place baseball.
Lui bill ii place de sue.
1. Sa se verifice daca mary este fata.(yes)
2. Sa se afiseze toate fetele.(mary, jane, sue)
3. Sa se verifice daca bill si jane sunt prieteni.(no)
4. Sa se verifice daca bill si jim sunt prieteni.(yes)
5. Sa se verifice daca bill si sue sunt prieteni.(yes)
predicates
friend(symbol, symbol)
girl(symbol)
likes(symbol, symbol)
clauses
friend(bill, jane) :-
girl(jane), likes(bill, jane), !.
friend(bill, jim) :-
likes(jim, baseball), !.
friend(bill, sue) :-
girl(sue).
girl(mary).
girl(jane).
girl(sue).
likes(jim, baseball).
likes(bill, sue).
==========================================================
Problema 10.
Avem o clasa de elevi, fiecare elev are un nume si o nota(gpa). Se cunosc:
Un student poate fi honor_student.
Fiecare student are un nume si o nota.
Un student poate fi in perioada de probation.
Un honor poate fi honor_student daca are un nume si o nota, nota sa fie mai amre
sau egala cu 3.5 si nu este in perioada de probation.
Betty Blue este un student cu nota 3.5.
David Smith este un student cu nota 2.0.
John Johnson este un student cu nota 3.7.
Betty Blue este in perioada de probation.
David Smith este in perioada de probation.
predicates
honor_student(name)
student(name, gpa)
probation(name)
clauses
honor_student(Name):-
student(Name, GPA),
GPA>=3.5,
not(probation(Name)).
predicates
likes_shopping(symbol)
has_credit_card(symbol, symbol)
bottomed_out(symbol, symbol)
clauses
likes_shopping(Who) :-
has_credit_card(Who, Card),
not (bottomed_out(Who, Card) ) ,
write(Who, " can shop with the ",Card, " credit card.\n").
has_credit_card(chris, visa).
has_credit_card(chris, diners).
has_credit_card(joe, shell).
has_credit_card(sam, mastercard).
has_credit_card(sam, citibank).
bottomed_out(chris, diners).
bottomed_out(sam, mastercard).
bottomed_out(chris, visa).