%ficha02

%Construir a extensão de um predicado que calcule a soma de dois valores;
soma(X,Y,R):- R is X+Y.

%Construir a extensão de um predicado que aplique uma operação aritmética (adição, subtração, multiplicação, divisão) a dois valores;
operacao(+,X,Y,R) :- R is X+Y.
operacao(-,X,Y,R) :- R is X-Y.
operacao(*,X,Y,R) :- R is X * Y.
operacao(/,X,Y,R ) :-R is X/Y, Y\=0.

% Construir a extensão de um predicado que calcule a soma de três valores;
soma(X,Y,K,R) :- R is X+Y+K.

% Construir a extensão de um predicado que calcule o maior valor entre dois números;
maior(X,Y,R) :- X<Y, R is Y.
maior(X,Y,R) :- X>Y, R is X.

% Construir a extensão de um predicado que calcule o menor valor entre dois números;
menor(X,Y,R) :- X>Y, R is Y.
menor(X,Y,R) :- X<Y, R is X.

%Construir a extensão de um predicado que calcule o valor de verdade contrário à resposta a uma questão.
%NAO SEI RESPONDER!!!!!

%Construir a extensão de um predicado que calcule a soma de um conjunto de valores;
somaconjunto([],0).
somaconjunto([H|T], R) :- somaconjunto(T,M), R is M+H.

%descobrir o maior de um conjunto de numeros
maior_conjunto([H],H).
maior_conjunto([H|L],M ) :- maior_conjunto(L, M1), maior(H,M1,M).

%Construir a extensão de um predicado que contabilize a quantidade de conjuntos vazios que existem num determinado conjunto de ocorrências;
vazio([X|Y],0). % se a lista estiver cheia dá 0 ocorrências.
vazio([X|Y],N ) :- vazio(Y,N1), N=N1+1 .
