Criada: 2016-10-06
Enunciado distribuído na sala.
%%% questao 1
disjuntos([]).
disjuntos([X|Y]) :-
nomeet(X, Y),
disjuntos(Y).
nomeet(_, []).
nomeet(X, [Y|Z]) :-
intersection(X, Y, []),
nomeet(X, Z).
%%% questao 2
media(L, M) :-
suma(L, S),
length(L, N),
M is S / N.
suma([], 0).
suma([X|Y], S) :-
suma(Y, S1),
S is X + S1.
%%% questao 3
busca(A) :-
inorder(A, I),
increasing(I).
inorder(nil, []).
inorder(arv(L, X, R), I) :-
inorder(L, IL),
inorder(R, IR),
append(IL, [X|IR], I).
increasing([]).
increasing([_]).
increasing([X, Y|Z]) :-
X < Y,
increasing([Y|Z]).
%%% questao 4
produto(P) :-
read(N),
trata(N, P).
trata(0, 1).
trata(N, P) :-
N =\= 0,
produto(P1),
P is N * P1.
Em todas as questões, o critério de correção começou por decidir como seria a pontuação: de cima para baixo ou de baixo para cima. Se a resposta estava bem escrita, com sintaxe Lisp correta, resolução do problema pedido (e não de outro) e com comprimento proporcional à complexidade da questão, então a correção procedeu de cima para baixo, ou seja, parte-se do valor integral e vão sendo subtraidas frações de pontos para cada defeito encontrado.
Por outro lado, se a resposta estava mal escrita, com sintaxe errada, resolvendo o problema errado ou incompleta, então a correção procedeu de baixo para cima: parte-se de zero e vão sendo adicionadas frações de pontos a cada indício de conhecimento importante encontrado.
A seguir, critérios específicos para cada questão. Os valores negativos se aplicam à correção de cima para baixo, e os valores positivos ou nulos se aplicam à correção de baixo para cima.
a digitar
a digitar
a digitar
a digitar
a digitar
© 2016 João Meidanis