MC346 - Prova Lisp

      Modificada: 2015-12-16 (critérios de correção)
      Criada: 2015-12-12
    

Enunciado distribuído na sala.

Gabarito

Para obter possíveis respostas para as questões, clique aqui.

Critérios de correção

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. Embora em geral a correção de cima para baixo resulte em notas maiores numa questão, é possível ter exceções a esta tendência.

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.

Questão 1

apenas construiu lista de distâncias+0,5
parênteses-0,2
confusão entre 0 e 1-0,2
confusão entre quote e function-0,2
sort sem função de comparação-0,2
confusão entre map e mapcar-0,3
confusão entre = e eql-0,3
faltou chamada de length-0,3
sintaxe errada em chamada a função-0,3
removeu distância em vez de peixe-0,4
erro de nome-0,5
não verificou se lista tem menos de N elementos-0,5
ordem dos argumentos para subtração-0,5
ordem dos argumentos para nth-0,5
função de comparação não retorna apenas t ou nil-0,5
sintaxe errada no uso de let-0,5
confusão entre car e cadr-0,5
elementos repetidos na hora de ordenar-0,5
faltou condição de parada-0,5
faltou chamada recursiva-0,5
uso errado de quote-0,5
erro no uso de if-0,5
ordenação caseira falhou-1,0
função não definidaaté -2,5

Questão 2

retorna todas as violações-0,1
parênteses-0,2
faltou inicializar parâmetro opcional com zero-0,2
confusão entre = e eql-0,3
sintaxe errada em chamada a função-0,3
sintaxe errada no uso de if-0,3
not a mais-0,5
faltou caso base (nil)-0,5
confusão entre car e cadr-0,5
não retorna restrição violada-0,5
retorna t em vez de nil quando não há restrição violada-0,5
retorna nil quando a lista tem tamanho 1-0,5

Questão 3

tentou redefinir t-0,1
parênteses-0,2
sintaxe errada no uso de if-0,3
confusão entre = e eql-0,3
quote a mais-0,5
não verificou se contas de entrada e saída são iguais-0,5
ordem dos argumentos para subtração-0,5
não tratou caso em que movimentação não afeta a conta-0,5
não verificou o instante da transação-1,0
recursão não foi até o fim da lista-1,0
computou apenas operações que saem da conta-1,0

Questão 4

só funciona para inteiros+1,0
confusão entre I e 1-0,1
soma negativos quando parâmetro é negativo-0,2
confusão entre > e <-0,2
confusão entre 0 e 1-0,2
sintaxe errada em chamada a função-0,3
confusão entre car e cadr-0,5
errou caso base de recursão-0,5
confusão entre (N - 2) e (- N 2)-0,5
não funciona para negativos-0,5
faltou chamada recursiva-0,5
quote a mais-0,5
mistura errônea entre estilo funcional puro e efeitos colaterais-1,0

MC346 Home

© 2015 João Meidanis