Next: Ciclos Up: Enunciados Previous: Dominó

Palavras Cruzadas

Considere um puzzle de palavras cruzadas vazio. Um exemplo pode ser o especificado pelos factos

         dimensao(5). % trata-se sempre de um puzzle quadrado
preto(1,3). % significa que o quadrado 1,3 e' preto
preto(2,3).
         preto(3,2).
         preto(4,3).
         preto(5,1).
         preto(5,5).

que representam o puzzle vazio:

    ;SPMamp;
 
         
         
  SPMamp;  
 
         
    SPMamp;
 
         
#770#>       <#774#>
         
#780#>       #784#>
         
         

& &
& & & &
SPMamp; & & & & & & &
SPMamp; & & & & & & &

& & & & & & & &
Considere depois uma lista de palavras. Por exemplo

&  &  &  & 
                  &  &  &  &                   


Considere depois uma lista de palavras. Por exemplo



         palavras([do,ore,ma,lis,ur,as,po,so,pirus,oker,al,adam,ik]).

                  &  &  &  &                   


Considere depois uma lista de palavras. Por exemplo



         palavras([do,ore,ma,lis,ur,as,po,so,pirus,oker,al,adam,ik]).


& & & &
Considere depois uma lista de palavras. Por exemplo palavras([do,ore,ma,lis,ur,as,po,so,pirus,oker,al,adam,ik]). odas as palavras têm pelo menos dois caracteres. O objectivo é preencher o puzzle usando todas as palavras exactamente uma vez. Se isso for impossí
& & & &
Considere depois uma lista de palavras. Por exemplo palavras([do,ore,ma,lis,ur,as,po,so,pirus,oker,al,adam,ik]). odas as palavras têm pelo menos dois caracteres. O objectivo é preencher o puzzle usando todas as palavras exactamente uma vez. Se isso for impossvel, o predicado palavrasCruzadas/1 que irá desenvolver deve falhar. O seu programa deve dar a solução no argumento de saída do predicado palavrasCruzadas/1 e na forma de uma lista de palavras na seguinte ordem: primeiro todas as palavras na horizontal, linha por linha, conforme elas ocorrem da esquerda para a direita; depois todas as palavras na vertical, coluna por coluna.
Para o exemplo dado acima, teremos

         ?- palavrasCruzadas(L).
            L = [as,po,do,ik,ore,ma,ur,lis,adam,so,al,pirus,oker]

significando que o puzzle é preenchido da seguinte maneira:

    ;SPMamp;
A
S
A S   P O
D O   I K
  SPMamp;  
A
 
A   O R E
    SPMamp;
M
A
M A   U R
#830#>       <#834#>
M A   U R
#840#>       #844#>
  L I S  
         

& &
M & A & & U & R
SPMamp; & & & & L & I & S &
SPMamp; & & & & L & I & S &

& & & & & L & I & S &
Se existir mais do que uma solução, o seu programa deve ser capaz de as produzir por backtracking. Cada quadrado não preto pertence a uma palavra de 2 ou mais caracteres.


Next: Ciclos Up: Enunciados Previous: Dominó


1999-04-01