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