Sunteți pe pagina 1din 2

Var1:

1)
Domains
I=integer
Li=i*
Predicates
Insert(I,li,li).
Clauses
Instert(_,[ ], [ ]).
Insert(N, [X|Y],[N|I1]:-X=5, insert(N,I,I1),!.
Insert(N,[X|Y],[X|I1]):-insert(N,I,I1).

3)
Calculeaza nr de elemente a fiecarei lsite
Lungime([ ],0).
Lungime([A|I],N):-lungime(I,N), N=N+1.

Verificam daca listele sunt de lungimi egale prin stergere a cate un element din fiecare lista

In cazul nostru algoritmul este compus din mai multe apelari recursive ceea ce ne ajuta sa calclam
complexitatea.

4)
a) o stare a problemei: tripletul (X,Y,Z) unde X,Y,Z liste de simboluri, fiecare lista reprezentand litera de
cub , orice lista va reprezenta locul pe masa.
b) stare initiala: ([B][C,A][ ]).
c) stare finala ([A,B,C][ ][ ]).
d) trecere dintr-o stre in alta
1) ([N|H],I,Z)->(H,[N,I],Z).
2) ([N|H],I,Z)->(H,[I],[N|Z]).
3)(H,[N|I],Z)->([N|H],I,Z).
4)(H,[N|I],Z)->(H,I[N|Z]).
5)(H,I,[N|Z]->([N|H],I,Z).
6)( H,I,[N|Z]->( H,[N|I] ,Z).
Stare regula
([B],[C,A][]) 1
([B],[A],[C]) 4
([],[B,A],[C]) 1
([C],[B,A],[]) 1
([C],[B,A], []) 3
([B,C],[A],[]) 3
([A,B,C],[][]) 3
Varianta2
1)
Domains
I=integer
Li=i*
Predicates
Insert(I,li,li)
Clauses
Insert(N,[X|Y],[X1|Y,N]:-Y=8, insert (N,X,X1).
Insert(N,[X|Y],[X1,Y]:-insert(N,X,X1),!.
Insert(_,[],[]).

Evaluare