en pt-br

A prova em si foi trivial. Bastava ler as partes a serem pesquisadas. As questões práticas, reintero, faltou empenho Prologuiano. Olhem as soluções:

Questões 7 e 4:

      
etiqueta_1([], _) :- !.
etiqueta_1( [X|R], L):-
       member(X,L),
       etiqueta_1( R , L).       

?- etiqueta_1([A,B],[77,88,99]).
A = 77,
B = 77 ;
A = 77,
B = 88 ;
A = 77,
B = 99 ;
.....
?- etiqueta_1([A,B],[77]).
A = 77,
B = 77 ;
fail.

?- etiqueta_1([A,B],[]).
fail.

?- etiqueta_1([],[]).
true.

todos_dif([], _) :- !.
todos_dif( [X|R], L):-
       member(X,L),
       remove(X,L,L1),
       todos_dif( R , L1). 

remove(X,L,L1) :- delete(L,X,L1).             

/*
?- todos_dif([A,B,C],[77,88,99,66,44]).
A = 77,
B = 88,
C = 99 ;
A = 77,
B = 88,
C = 66 ;
A = 77,
B = 88,
C = 44 ;
....................
bem como:
?- todos_dif([A,B,C],[77,88]).
fail.
*/

Questão 8:

:- use_module(library(clpfd)). 
%%:- use_module(library(simplex)). 
fab([A,B,C]) :-
		  Variaveis = [A,B,C],
		  Variaveis ins 1 .. 5, 
		  all_different(Variaveis),
		  tuples_in([ [A, T1]],[ [1, 5],[2,1],[3,3],[4,4],[5,6]]),
		  tuples_in([ [B, T2]], [ [1,8], [2,8], [3,5], [4,7], [5,3]]),
		  tuples_in( [ [C, T3]],[ [1,4],[2, 9], [3,1],[4, 5], [5,2]]),
		  %% T1 + T2 + T3 #>= 15, %% OK ou
		  sum([T1,T2,T3], #>=, 15).

parte_1([A,B,C]) :- fab([A,B,C]), labeling([ff],  [A,B,C]). %%%, nl, write([A,B,C]).
/*
?- parte_1(X).
X = [1, 3, 2] ;
X = [1, 4, 2] ;
X = [1, 5, 2] ;
X = [1, 2, 4] ;
*/

parte_2([A,B,C]) :-  
   		 Variaveis = [A,B,C],
	  	 Variaveis ins 1 .. 5, 
		 all_different(Variaveis),
		 tuples_in([[A, T1]],[[1, 5],[2,1],[3,3],[4,4],[5,6]]), 
		 tuples_in([[B, T2]], [[1,8], [2,8], [3,5], [4,7], [5,3]]),
		 tuples_in([[C, T3]],[[1,4],[2, 9], [3,1],[4, 5], [5,2]]),
		 %% T1 + T2 + T3 #>= 15, %% OK ou
		 sum([T1,T2,T3], #>=, 15),
		 labeling([max(T1 + T2 + T3)],  [A,B,C]). %%, nl, write([A,B,C]).


/*

?- parte_2(X).
X = [5, 1, 2] ;
X = [5, 4, 2] ;
X = [1, 4, 2] ;
.................
*/

Convenhamos que quase todo código foi fornecido na prova!