MC346 - Prova Prolog

      Criada: 2016-10-06
    

Enunciado distribuído na sala.

Gabarito

%%% 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.

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.

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.

Geral

a digitar

Questão 1

a digitar

Questão 2

a digitar

Questão 3

a digitar

Questão 4

a digitar


MC346 Home

© 2016 João Meidanis