Sunteți pe pagina 1din 2

Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică

Raport
Lucrare de laborator nr. 2
Disciplina: Programarea Logică și Inteligența Artificială
Tema: Structuri de date în prolog.

A verificat: Lazu Victoria

Chișinău 2015
Scopul lucrării:
Folosirea listelor, un instrument puternic al Prologului.
Sarcina lucrării:
Varianta 7. Să se scrie predicatul imparte(L, L1, L2) care împarte lista L în două sub-liste
L1 și L2, care au un număr de elemente aproximativ egal, fără a calcula lungimea listei L. Ex:
imparte([a, b, c, d, e], L1, L2) va produce: L2 = [a, b, c] și L3 = [d, e].

Desfăşurarea lucrării:
Listingul programului:
imparte(L, A, B) :- rupe(L, L, A, B).
rupe(B, [], [], B).
rupe(B, [_], [], B).
rupe([H|T], [_, _ | T1], [H|T2], B) :- rupe(T, T1, T2, B).

Rezultatele rulării:

[trace] 6 ?- imparte([1,2,3,4,5],A,B).
Call: (7) imparte([1, 2, 3, 4, 5], _G1722, _G1723) ? creep
Call: (8) rupe([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], _G1722, _G1723) ? creep
Call: (9) rupe([2, 3, 4, 5], [3, 4, 5], _G1823, _G1723) ? creep
Call: (10) rupe([3, 4, 5], [5], _G1826, _G1723) ? creep
Exit: (10) rupe([3, 4, 5], [5], [], [3, 4, 5]) ? creep
Exit: (9) rupe([2, 3, 4, 5], [3, 4, 5], [2], [3, 4, 5]) ? creep
Exit: (8) rupe([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2], [3, 4, 5]) ? creep
Exit: (7) imparte([1, 2, 3, 4, 5], [1, 2], [3, 4, 5]) ? creep
A = [1, 2],
B = [3, 4, 5]

Concluzie
În urma elaborării acestei lucrări de laborator s-a facut cunoștință cu listele din limbajul
prolog. S-a observat care sunt operațiile care pot fi efectuate asupra listelor în prolog și
cum aceste operații pot fi utilizate pentru rezolvarea problemelor.