prolog, PROGRAMOWANIE DEKLARATYWNE, PROGRAMOWANIE DEKLARATYWNE, ZADANIA


PROGRAMOWANIE DEKLARATYWNE, ZADANIA

ZADANIE 1

Zapisz w postaci programu prologowego nastepujace 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 lubia jednoczesnie Marta i Jan.

% Program: lubi
% Definiowane predykaty:
% lubi/2
% _________________________

% lubi/2
% lubi(X,Y): spełniony, gdy X lubi Y
% ------------------------- lubi/2
lubi(marta,wino).
lubi(marta,mandarynki).
lubi(marta,tenis).
lubi(marta,kwiaty).
lubi(piotr,banany).
lubi(piotr,wino).
lubi(piotr,tenis).

lubi(jan,X):-lubi(piotr,X).
lubi(ania,X):-lubi(marta,X),lubi(jan,X).
% ------------------------- lubi/2

Przeprowadzajac odpowiednia sesje prologowa odpowiedz na pytania:

1. Czy Piotr lubi wino?

2. Co lubi Piotr?

3. Co lubi Marta?

4. Czy Marta cos lubi?

5. Kto lubi tenis?

6. Czy ktos lubi jabłka?

7. Co lubi Ania?

*/ sesja prologowa
2 ?- lubi(piotr,wino).
true .

3 ?- lubi(piotr,X).
X = banany ;
X = wino ;
X = tenis.

4 ?- lubi(marta,X).
X = wino ;
X = mandarynki ;
X = tenis ;
X = kwiaty.

5 ?- lubi(marta,_).
true .

6 ?- lubi(X,tenis).
X = marta ;
X = piotr ;
X = jan ;
X = ania ;
false.

7 ?- lubi(_,jablka).
false.

8 ?- lubi(ania,X).
X = wino ;

X = tenis ;
false.
/*


ZADANIE 2

Zapisz w postaci programu prologowego nastepujace stwierdzenia:

1. Ola jest madra.

2. Ala jest piekna i dobra.

3. Piotr jest piekny i silny.

4. Adam jest dobry i madry.

5. Jan jest bogaty.

6. Ula jest bogata i silna.

7. Wszyscy me1czyzni lubia piekne kobiety.

8. Wszyscy bogaci ludzie sa szczesliwi.

9. Ka1da kobieta, która lubi me1czyzne z wzajemnoscia z jego strony, jest szczesliwy.

10. Ka1dy me1czyzna, który lubi kobiete z wzajemnoscia z jej strony, jest szczesliwy.

11. Ula lubi wszystkich me1czyzn, którzy je lubia.

12. Ola lubi wszystkich ludzi, którzy ja lubia, pod warunkiem, 1e sa albo bogaci i dobrzy,

albo piekni i silni.

Uzyskaj odpowiedz na pytanie: kto jest szczesliwy?

% Program: szczesliwy
% Definiowane predykaty:
% jest/2, men/1, kobieta/1, lubi/2, szczesliwy/1
% _____________________

% jest/2
% jest(X,Y): spełniony, gdy Y jest prawdziwe dla X
% --------------------- jest/2
jest(ola,madry).
jest(ala,piekny).
jest(ala,dobry).
jest(piotr,piekny).
jest(piotr,silny).
jest(adam,dobry).
jest(adam,madry).
jest(jan,bogaty).
jest(ula,bogaty).
jest(ula,silny).
% --------------------- jest/2

% men/1
% men(X): spełniony, gdy X jest mężczyzną
% ---------------------- men/1
men(piotr).
men(adam).
men(jan).
% ----------------------- men/1

% kobieta/1
% kobieta(X): spełniony, gdy X jest kobietą
% ---------------------- kobieta/1
kobieta(ola).
kobieta(ala).
kobieta(ula).
% ----------------------- kobieta/1

% lubi/2
% lubi(X,Y): spełniony, gdy X lubi Y
% --------------------- lubi/2
lubi(X,Y):-men(X),kobieta(Y),jest(Y,piekny).
lubi(ula,X):-men(X),lubi(X,ula).
lubi(ola,X):-X\==ola,lubi(X,ola),jest(X,bogaty),jest(X,dobry).
lubi(ola,X):-X\==ola,lubi(X,ola),jest(X,piekny),jest(X,silny).
% --------------------- lubi/2

% szczesliwy/1
% szczesliwy(X):- spełniony, gdy X jest szczęśliwy
% --------------------- sczesliwy/1
szczesliwy(X):-jest(X,bogaty).
szczesliwy(X):-kobieta(X),lubi(X,Y),lubi(Y,X).
szczesliwy(X):-men(X),lubi(X,Y),lubi(Y,X).
% --------------------- szczesliwy/1

*/ sesja prologowa
2 ?- szczesliwy(X).
X = jan ;
X = ula ;
false.
/*

ZADANIE 3

Znajdz przyjaciół (ludzi, którzy sie nawzajem lubia) w grupie osób o nastepujacych

upodobaniach:

1. Ola lubi jaroszy, którzy dodatkowo uprawiaja sport;

2. Ewa lubi spedzac czas wsród niepalacych jaroszy;

3. Iza preferuje miłosników ksia1ek lub aktywnych sportowo wrogów tytoniu;

4. Janek najlepiej czuje sie wsród uprawiajacych sport;

5. Piotr mo1e sie zaprzyjaznic z uprawiajacymi sport jaroszami albo z zapalonymi

czytelnikami ksia1ek;

6. Paweł wymaga od przyjaciela, by był jaroszem, uprawiał sport i lubił czytac ksiazki;

jesli Ola, Ewa, Jan i Paweł sa jaroszami, Iza, Piotr i Paweł pala papierosy, Ola, Iza i Paweł

czytaja ksia1ki, a Iza, Piotr i Paweł uprawiaja sport.

% Program: przyjaciele
% Definiowane predykaty
% jest/2, lubi/2
% __________________________

% jest/2
% jest(X,Y): spełniony, gdy Y jest prawdziwe dla X
% -------------------------- jest/2
jest(ola,jarosz).
jest(ewa,jarosz).
jest(jan,jarosz).
jest(pawel,jarosz).
jest(iza,pali).
jest(piotr,pali).
jest(pawel,pali).
jest(ola,czyta).
jest(iza,czyta).
jest(pawel,czyta).
jest(iza,sport).
jest(piotr,sport).
jest(pawel,sport).
% -------------------------- jest/2

% lubi/2
% lubi(X,Y): spełniony, gdy X lubi Y
% --------------------------- lubi/2
lubi(ola,X):-X\==ola,jest(X,jarosz),jest(X,sport).
lubi(ewa,X):-X\==ewa,jest(X,jarosz),\+jest(X,pali).
lubi(iza,X):-X\==iza,jest(X,czyta).
lubi(iza,X):=X\==iza,jest(X,sport),\+jest(X,pali).
lubi(jan,X):-X\==jan,jest(X,sport).
lubi(piotr,X):-X\==piotr,jest(X,sport),jest(X,jarosz).
lubi(piotr,X):-X\==piotr,jest(X,czyta).
lubi(pawel,X):=X\==pawel,jest(X,jarosz),jest(sport),jest(czyta).
% --------------------------- lubi/2

ZADANIE 4

Wiadomo, 1e Ewa jest rodzicem Ani, a Piotr jest rodzicem Ewy.

a) Zdefiniuj relacje rodzic/2, a nastepnie korzystajac z tej definicji, relacje

przodek/2

b) narysuj drzewo poszukiwania rozwiazania dla celu:

Kto jest przodkiem Ani?

c) zweryfikuj narysowane drzewo korzystajac z predykatu trace/0.

% Program: Przodek
% Definiowane predykaty:
% rodzic/2, przodek/2
% ____________________________

% rodzic/2
% rodzic(X,Y): spełniony, gdy X jest rodzicem Y
% ------------------------- rodzic/2
rodzic(ewa,ania).
rodzic(piotr,ewa).
% ------------------------- rodzic/2

% przodek/2
% przodek(X,Y): spełniony, gdzy X jest przodkiem Y
% ------------------------- przodek/2
przodek(X,Y):-rodzic(X,Y).
przodek(X,Y):-rodzic(X,Z),przodek(Z,Y).
% ------------------------- przodek/2

*/ sesja prologowa
1 ?- przodek(X,ania).
X = ewa ;
X = piotr ;
false.
/*

ZADANIE 5

Wiadomo, 1e Jan urodził sie w 1974 roku, Ludwik w 1976, Maciej w 1960, a Grzegorz

w 1975.

a) zdefiniuj predykat urodzony/2, a nastepnie korzystajac z tej definicji, predykat

starszy/2

b) narysuj drzewo poszukiwania rozwiazania dla celów:

Czy Jan jest starszy od Macieja?

Kto jest starszy od Jana?

Od kogo Jan jest starszy?

c) zweryfikuj narysowane drzewa korzystajac z predykatu trace/0.

% Program: wiek
% Definiowane predykaty:
% urodzony/2, starszy/2
% _________________________

% urodzony/2
% urodzony(X,Y):- spełniony, gdy X urodził się w roku Y
% ------------------------- urodzony/2
urodzony(jan,1974).
urodzony(ludwik,1976).
urodzony(maciej,1960).
urodzony(grzegorz,1975).
% ------------------------- urodzony/2

% starszy/2
% starszy(X,Y): spełniony, gdy X jest starszy od Y
% ------------------------- starszy/2
starszy(X,Y):-urodzony(X,A),urodzony(Y,B),A<B.
% ------------------------- starszy/2

*/ sesja prologowa
1 ?- starszy(jan,maciej).
false.

2 ?- starszy(X,jan).
X = maciej ;
false.

3 ?- starszy(jan,X).
X = ludwik ;
X = grzegorz.
/*

ZADANIE 6.

Uzgodnic nastepujace listy. W każdym przypadku podac 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].

1. false, ponieważ są inne stałe
2. false, ponieważ pierwsza lista ma trzy elementy, a druga dwa.
3. X=1, Y=[2,3]
4. T=[2,3,osiem]
5. T=[2,3,osiem]
6. X=[0,1,2], Y=[[3,4],[5]]
7. X=[ola,ma,psa]
8. X=1, T=alfa(3,4),alfa(5,6)]

ZADANIE 7.

Zdefiniowac predykat spr_wzorzec(L, W) spełniony, gdy lista L pasuje do zadanego

wzorca W. Wzorzec jest lista, której elementami moga byc nastepujace stałe:

• n - pasuje do liczby,

• a - pasuje do atomu,

• l - pasuje do elementu bedacego (dowolna) lista,

• . - pasuje do dowolnego elementu,

• * - pasuje do podlisty o dowolnej długosci (tak1e pustej).

Np. wzorzec [n,n] oznacza liste zło1ona z dwóch liczb, zas wzorzec [a,*,n] - liste

zaczynajaca sie atomem i konczaca sie liczba.

Wskazówka: u1yc predykatów wbudowanych atom, number, itp.

Przykład oczekiwanego działania predykatu:

?- spr_wzorzec([15,101,ala,ma,kota,[1,2],a],[n,n,*,l,.]).

True



Wyszukiwarka