Sunteți pe pagina 1din 1

Inteligenta artificiala. Lucrarea de laborator Nr.

7
Distribuirea numerelor. Probleme combinatorice.

Var 1. Sa se scrie numerele de la 1 la n in trei cutii: A, B, C astfel incat sa se satisfaca urmatoarele


conditii:
- daca numarul i este intr-o cutie, atunci numarul k=2*i (k<=n), nu poate fi cu el in aceeasi cutie.
- Daca numerele i si j sunt intr-o cutie, atunci k=i+j (k<=n), nu poate fi in aceeasi cutie cu ultimii.
Sa se scrie un program Prolog ce ar gasi solutia problemei, luand in crestere valoarea lui n.

distrib(i).
distribuire(i,li,li,li,i).
sepoate(i,li).
apartine(i,li).
cond2(i,li).

distr(0,[],[],[]).
distr(N,[N|A],B,C):-N>0,N1 is N-1,distr(N1,A,B,C),not(conditie(N,A)).
distr(N,A,[N|B],C):-N>0,N1 is N-1,distr(N1,A,B,C),not(conditie(N,B)).
distr(N,A,B,[N|C]):-N>0,N1 is N-1,distr(N1,A,B,C),not(conditie(N,C)).

conditie(Z,L):-member(X,L),member(Y,L),not(X=Y),Z is X+Y.
conditie(Z,L):-member(X,L),Z is X*2.

?- distr(10,A,B,C).
distr(10,A,B,C).
A B C
[10, 9, 8, 3] [7, 4, 1] [6, 5, 2]

S-ar putea să vă placă și