Sunteți pe pagina 1din 2

Problema:

Trei prieteni au obtinut primul, al doilea si respectiv al treilea loc intr-un concurs.
1. Fiecare dintre ei au nume diferite, prefera un alt sport si au nationalitati diferite.
2. Michael prefera baschetul si a obtinut un loc mai bun decat americanul.
3. Simon este israelian si a obtinut un loc mai bun decat jucatorul de tenis.
4. Jucatorul de cricket a obtinut primul loc.
Sa se scrie un program in Prolog care sa raspunda la urmatoarele intrebari: Cine este
Australian,israelian,american ? Ce sport prefera un oarecare sportiv ?

p([[_,_,cricket,1],[_,_,_,2],[_,_,_,3]]).

apartine(X, [X | _]).

apartine(X, [_ | Rest]) :-apartine(X, Rest).

clasament(L) :- p(L),

apartine([michael,_,baschet,A],L),apartine([_,american,_,B],L),A<B,

apartine([simon,israelian,_,C],L),apartine([_,_,tenis,D],L),C<D,

apartine([richard,_,_,_],L),apartine([_,australian,_,_],L),!.

nationalitatea(X,Y) :- clasament (L),

apartine([Y,X,_,_],L),!.

sport(X,Y) :- clasament (L),

apartine([X,_,Y,_],L),!.

p([[_,_,cricket,1],[_,_,_,2],[_,_,_,3]]).

Predicatul p este folosit pentru a crea structura listei.

apartine(X, [X | _]).

apartine(X, [_ | Rest]) :-apartine(X, Rest).

Predicatul apartine verifica daca un element se contine sau nu in lista.

clasament(L).

In predicatul prieteni se contin toate datele cunoscute de noi cum ar fi: michael prefera baschetul, etc.
nationalitatea(X,Y).

Predicatul nationalitatea are doi atomi : X care este de intrare si va contine nationalitatea si Y care este
de output in care se va intoarce numele sportivului care corespunde nationalitatii date.

sport(X,Y).

Predicatul sport are doi atomi : X care este de intrare si va contine numele sportivului si Y care este de
output in care se va intoarce sportul pe care il prefera sportivul dat.

Intrebam prologul: Care este clasamentul prietenilor?

clasament(Clasament).

Raspunsul Prologului va fi:

Clasament = [[simon, israelian, cricket, 1], [michael, australian, baschet, 2], [richard, american,
tenis, 3]]

Intrebam prologul: Ce sport prefera Simon?


sport(simon,Prefera).
Raspunsul Prologului va fi:

Prefera = cricket

Intrebam prologul: Cine este american?


nationalitatea(american,Cine).

Raspunsul Prologului va fi:

Cine = richard