PROGRAMOWANIE DEKLARATYWNE, ZADANIA
ZADANIE 1
Zapisz w postaci programu prologowego następujące stwierdzenia:
1. Marta lubi wino, mandarynki, tenis i kwiaty.
2. Piotr lubi banany, wino i tenis.
3. Jan lubi wszystko to, co lubi Piotr.
4. Ania lubi te rzeczy, które lubią jednocześnie Marta i Jan.
Przeprowadzając odpowiednią sesję prologową odpowiedz na pytania:
1. Czy Piotr lubi wino?
2. Co lubi Piotr?
3. Co lubi Marta?
4. Czy Marta coś lubi?
5. Kto lubi tenis?
6. Czy ktoś lubi jabłka?
7. Co lubi Ania?
ZADANIE 2
Zapisz w postaci programu prologowego następujące stwierdzenia:
1. Ola jest mądra.
2. Ala jest piękna i dobra.
3. Piotr jest piękny i silny.
4. Adam jest dobry i mądry.
5. Jan jest bogaty.
6. Ula jest bogata i silna.
7. Wszyscy mężczyźni lubią piękne kobiety.
8. Wszyscy bogaci ludzie są szczęśliwi.
9. Każda kobieta, która lubi mężczyznę z wzajemnością z jego strony, jest szczęśliwy.
10. Każdy mężczyzna, który lubi kobietę z wzajemnością z jej strony, jest szczęśliwy.
11. Ula lubi wszystkich mężczyzn, którzy je lubią.
12. Ola lubi wszystkich ludzi, którzy ją lubią, pod warunkiem, że są albo bogaci i dobrzy,
albo piękni i silni.
Uzyskaj odpowiedź na pytanie: kto jest szczęśliwy?
ZADANIE 3
Znajdź przyjaciół (ludzi, którzy się nawzajem lubią) w grupie osób o następujących
upodobaniach:
1. Ola lubi jaroszy, którzy dodatkowo uprawiają sport;
2. Ewa lubi spędzać czas wśród niepalących jaroszy;
3. Iza preferuje miłośników książek lub aktywnych sportowo wrogów tytoniu;
4. Janek najlepiej czuje się wśród uprawiających sport;
5. Piotr może się zaprzyjaźnić z uprawiającymi sport jaroszami albo z zapalonymi
czytelnikami książek;
6. Paweł wymaga od przyjaciela, by był jaroszem, uprawiał sport i lubił czytać ksiązki;
jeśli Ola, Ewa, Jan i Paweł są jaroszami, Iza, Piotr i Paweł palą papierosy, Ola, Iza i Paweł
czytają książki, a Iza, Piotr i Paweł uprawiają sport.
ZADANIE 4
Utwórz prologową bazę danych o twojej rodzinie (co najmniej trzy pokolenia).
Opisz te bazę za pomocą następujących relacji:
kobieta/1 mezczyzna/1 rodzic/2.
Nastepnie zdefinuj relacje:
ojciec/2
matka/2
jest_ojciec/1
jest_matka/1
rodzenstwo/2
brat/2
siostra/2
dziadek/2
babcia/2
wnuk/2
przodek/2.
ZADANIE 4
Wiadomo, że Ewa jest rodzicem Ani, a Piotr jest rodzicem Ewy.
a) Zdefiniuj relację rodzic/2, a następnie korzystając z tej definicji, relację
przodek/2
b) narysuj drzewo poszukiwania rozwiązania dla celu:
Kto jest przodkiem Ani?
c) zweryfikuj narysowane drzewo korzystając z predykatu trace/0.
ZADANIE 5
Wiadomo, że Jan urodził się w 1974 roku, Ludwik w 1976, Maciej w 1960, a Grzegorz
w 1975.
a) zdefiniuj predykat urodzony/2, a następnie korzystając z tej definicji, predykat
starszy/2
b) narysuj drzewo poszukiwania rozwiązania dla celów:
Czy Jan jest starszy od Macieja?
Kto jest starszy od Jana?
Od kogo Jan jest starszy?
c) zweryfikuj narysowane drzewa korzystając z predykatu trace/0.
ZADANIE 6
.
Uzgodnić następujące listy. W każdym przypadku podać odpowiednie uzasadnienie.
[ala, ma, kota] = [kota, ma, ala].
[1,2,3] = [X,Y].
[1,2,3] = [X|Y].
[1,2,3,osiem] = [1|T].
[1|[2|[3|[osiem]]]] = [1|T].
[1|[2|[3|[osiem]]]] = [X|[osiem]].
[[0,1,2],[3,4],[5]] = [X|Y].
[ala,ma,kota,a,ola,ma,psa] = [ala,ma,kota,a|X].
[alfa(1,2), alfa(3,4), alfa(5,6)] = [alfa(X,2)|T].
ZADANIE 7
.
Dany jest następujący program:
zlodziej (jan).
lubi (maria, jan).
lubi (maria, wino).
lubi (jan, zloto).
lubi (jan, X):- lubi (X, wino).
moze_ukrasc (X, Y) :- zlodziej (X),
lubi (X, Y).
moze_ukrasc (_ , brylanty).
Wyjaśnij, jak rozumiesz zawarte w programie fakty i reguły.
Sformułuj cel odpowiadający na pytanie: co może ukraść Jan? Przedstaw drzewo poszukiwań
rozwiązań dla tego celu