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