MC346 - Paradigmas de Programação: Programação Lógica: Desafio

      Criada: 2017-08-24
      Modificada: 2017-09-05 - avaliador 4_1
      Modificada: 2017-09-05 - avaliador 4_2: chamada execlp corrigida
    

Projeto Prolog

Seu desafio envolvendo a linguagem Prolog será escrever um resolvedor para o jogo Master Mind.

Sobre o programa

Seu programa deverá ser entregue na forma de script Prolog para o interpretador SWI Prolog. Deverá conter todos os predicados necessários para resolver o problema, e terminar com uma chamada do predicado principal, seguindo de halt. Um modelo do script pode ser encontrado aqui (salve como modelo.pl) e é reproduzido a seguir:

      #!/usr/bin/swipl

      %%% Coloque seus predicados aqui
      %%% ...

      :- play, halt.
    

Seus chutes devem ser impressos na saída padrão. Os chutes devem ser listas de quatro números inteiros, todos distintos, cada um deles de 1 a 6. A resposta de cada chute deve ser lida da entreda padrão. As respostas são listas de dois números inteiros, o primeiro sendo o número de "bons" e o segundo sendo o números de "regulares" no chute. A resposta será dada terminando com ponto ("."), de modo que possa ser lida como um termo Prolog com read(R).

Seu programa deverá tentar adivinhar a senha pensada pelo outro jogador da forma mais rápida possível, isto é, com o menor número de chutes. Um programa correto deverá terminar de uma das duas formas seguintes:

Qualquer outro comprotamento será considerado errôneo e acarretará perda de pontos para a autora ou o autor.

Para efeito de depuração, os alunos poderão fazer o programa imprimir outras informações que acharem necessárias, mas todas elas deverão ser dirigidas à saída de erro (stderr), e não à saída padrão (sdtout), que deverá ser reservada para comunicação com o avaliador apenas.

Sobre o avaliador

Um programa avaliador será usado para auxiliar o instrutor a avaliar os programas dos alunos. O avaliador pensará numa senha aleatória, ou receberá uma senha na linha de comando, e dará as respostas corretas relativas a esta senha para os programas.

O avaliador foi escrito em C e seu código-fonte está disponível. Os alunos poderão compilá-lo e usá-lo para testar seus programas. O avaliador foi feito para funcionar em Linux. Seu uso em Windows poderá ser diferente. Em Linux, deve ser compilado com:

      gcc aval4_2.c -o aval4_2      
e chamado como:
      ./aval4_2 <script-prolog> [<senha>]      
onde <script-prolog> é o programa do aluno. Se a <senha> for omitida, será gerada uma de forma aleatória.


MC346 Home

© 2017 João Meidanis