Next: Tardes Vazias Up: Enunciados Previous: Tabuleiro

Serpente

A serpente belga é um animal cujo corpo tem um padrão repetido. No entanto esse padrão não é necessariamente repetido um número inteiro de vezes. O padrão consiste numa sequência de anéis. Cada anel tem um identificador que é uma constante de comprimento 1.
A serpenta belga é um animal que gosta de repousar enrolada de uma maneira muito particular: repousa sempre na forma de um rectângulo, a cabeça no canto superior esquerdo e preenchendo o rectângulo linha por linha --ver exemplo abaixo.
Pretende-se que implemente um predicado serpente/3, que mostre no ecrã uma serpente belga em repouso. Esse predicado será chamado com os seguintes três argumentos:

1.
uma lista de constantes representando o padrão;
2.
uma lista cujo comprimento é igual ao número de anéis numa linha (diferente de []);
3.
uma lista cujo comprimento é igual ao número de anéis numa coluna (diferente de []).

O seu predicado serpente/3 deverá produzir o resultado no ecrã. Segue-se um exemplo em que a serpente esticada tem o aspecto a b c d a b c d a b c d a b c:

         ?- serpente([a,b,c,d],[_,_,_,_,_],[_,_,_]).

         a b c d a
         b a d c b
         c d a b c

Antes de começar a implementar o seu programa Prolog, deverá saber que as serpentes belgas têm uma grande aversão por computações aritméticas. Assim sendo, o seu programa não deverá usar nenhum dos operadores aritméticos. Em particular, o seu programa será rejeitado se contiver qualquer um dos símbolos

         is  <  >  >=  =<  +  -  *  name  arg  functor  =..

Next: Tardes Vazias Up: Enunciados Previous: Tabuleiro


1999-04-01