Criada: 2006-07-25 Modificada por último: 2006-10-06
Campeonatos | Gerenciador suíço | Gerenciador | alarm.c | Modelo p/ jogador |
Prolog - Wiki | SWI-Prolog | Exercícios Prolog | Sudoku - Wiki | Treine Sudoku! |
Campeonatos rodando! Veja aqui os resultados. Cada arquivo contém um campeonato, onde são mostrados os jogos individualmente e no final o placar resultante, ordenado. Os pontos agora dependem do tempo --- veja abaixo descrição atualizada do gerenciador.
Agora o gerenciador limita o tempo de bolação e de resposta. Porém, é necessário compilar uma função em C para que isto funcione. O código em C está aqui. Para compilá-lo, use:
gcc -I/usr/lib/pl-5.6.18/include/ -fpic -c alarm.c
gcc -shared -o alarm.so alarm.o
Deixe o arquivo alarm.so no mesmo diretório onde for rodar o gerenciador.
A linguagem escolhida para esta seção do curso é Prolog.
Usaremos a implementação SWI-Prolog.
Livro-texto para Prolog: Programming in Prolog, W.F.Clocksin, C.S.Mellish, Springer-Verlag, 5ª edição, 2003. ISBN: 3-540-00678-8.
Exercício de programação para Prolog: o jogo Sudoku. Para quem quiser treinar na mão, experimente este site. Cada aluno terá que implementar um programa que saiba tanto bolar jogos como resolver jogos. Um programa gerenciador será o mediador entre os dois contendores, recebendo jogo e solução do primeiro jogador, verificando a validade, e enviando apenas o jogo para o segundo jogador, que deverá responder com a solução.
Data de entrega: 09 de outubro. A partir daí, a entrega será penalizada a uma taxa de 10% a cada 24 horas de atraso. O gerenciador deverá estar pronto até 06 de setembro.
Formato da solução: lista com 81 elementos. Os nove primeiros dão a primeira linha da solução, os próximos nove a segunda linha, e assim por diante. Exemplo:
[1,2,3,4,5,6,7,8,9,
7,8,9,1,2,3,4,5,6,
4,5,6,7,8,9,1,2,3,
9,1,2,3,4,5,6,7,8,
6,7,8,9,1,2,3,4,5,
3,4,5,6,7,8,9,1,2,
8,9,1,2,3,4,5,6,7,
5,6,7,8,9,1,2,3,4,
2,3,4,5,6,7,8,9,1]
Para o problema, o formato é o mesmo, exceto que as casas não preenchidas serão representadas por variáveis anônimas. O número de casas já preenchidas foi flexibilizado: agora podem ser entre 17 e 80 casas já preenchidas. A pontuação do jogo leva em conta a medição de tempo para achar a resposta.
Programa gerenciador já está pronto. Nesta versão a pontuação depende do tempo usado. O limite máximo é 50 segundos. Veja aqui.
O programa gerenciador se comunica com os módulos dos jogadores através do seguinte protocolo: para obter o problema e a solução do jogador 1, chamará o predicado:
manda_probl(-P, -S)
Após verificação, enviará o problema e obterá a resposta do segundo jogador através do predicado:
resolve(+P, -S)
O gerenciador verificará:
Cada um destes quesitos vale pontos, veja no código do gerenciador os detalhes. Esta pontuação poderá mudar em função do que encontrarmos nos campeonatos de treino.
Para escrever seu jogador, coloque todos os seus predicados num módulo segundo o seguinte exemplo. Cada aluno pode sumbeter quantos jogadores quiser nos treinos, todos eles identificados por módulos cujo nome tem prefixo da forma raXXXXXX, onde XXXXXX é o RA do aluno. O nome do arquivo que contém o módulo deve necessariamente ser o nome do módulo com extensão .prolog.
© 2006 João Meidanis