Documente Academic
Documente Profesional
Documente Cultură
Pentru realizarea acestui laborator puteți aplica metode de căutare prin încercări
succesive, backtracking sau orice algoritmi potriviți.
Remarcă. Dacă soluționați această problemă, ulterior puteți rezolva varianta proprie,
selectând din toate soluțiile pe cele, care satisfac condițiile variantei D-Voastră.
Rezolvare:
distr(0,[],[],[]).
distr(N,[N|A],B,C):-N>0,N1 is N-1,distr(N1,A,B,C).
distr(N,A,[N|B],C):-N>0,N1 is N-1,distr(N1,A,B,C).
distr(N,A,B,[N|C]):-N>0,N1 is N-1,distr(N1,A,B,C).
Exemplu de apelare:
Goal: distr(4,A,B,C)
Rezolvare:
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.
Exemplu de apelare:
Goal: distr(4,A,B,C)