Criada: 2017-12-14
Enunciado distribuído na sala.
%%% questao 1
Prolog, Haskell e Python.
%%% questao 2
mesmaSoma([]).
mesmaSoma([X|R]) :-
soma(X, S),
tudoSoma(R, S).
tudoSoma([], _).
tudoSoma([X|R], S) :-
soma(X, S),
tudoSoma(R, S).
soma([], 0).
soma([A|R], S) :-
soma(R, S1),
S is S1 + A.
%%% questao 3
disjuntas :: (Eq a) => [[a]] -> Bool
disjuntas [] = True
disjuntas (a:r) = disj2 a r && disjuntas r
disj2 :: (Eq a) => [a] -> [[a]] -> Bool
disj2 x y = not $ any (\z -> any (elem z) y) x
%%% questao 4
def insere(item, node):
if node is None:
node = Node(item)
elif item < node.item:
node.left = insere(item, node.left)
elif item > node.item:
node.right = insere(item, node.right)
return node
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.
todos acertaram tudo
faltou chamada recursiva -1,0
número de argumentos diferente do que devia ser -1,0
faltou caso base -0,5
corpo vazio -0,5
: em vez de , -0,5
variável com inicial minúscula -0,5
ordem das cláusulas -0,5
faltaram colchetes -0,5
confusão com nomes de variáveis -0,5
confusão com nomes de funções -0,5
[0] em vez de [] -0,5
estratégia: só testa listas consecutivas -1,0
usa guardas como "ou" -0,7
esqueceu condição -0,6
faltaram/sobraram de parênteses -0,5
faltou or -0,5
faltou import Data.List -0,5
faltou && -0,5
confusão entre head e tail -0,5
! em vez de not, ou faltou not -0,2
erro em assinatura -0,2
= no lugar errado -0,2
=> em lugar de -> -0,1
bool, boolean em vez de Bool -0,1
inicial maiúscula/minúscula -0,1
elems em lugar de elem -0,1
: em lugar de = -0,1
apenas verifica se duas listas têm elementos em comum +1,1
apenas lista vazia +0,3
faltou função: -1,0
esqueceu parte da árvore -1,0
retorna None ou nó errado em alguns casos -1,0
acesso a campo de None -0,7
não cria nó -0,7
variável não definida -0,5
inicial maiúscula/minúscula -0,1
© 2017 João Meidanis