Next: Gera Código Up: Enunciados Previous: Tardes Vazias

Formas

Considere uma matriz NxM (N e M diferentes de 0) preenchida com as cores preto e branco. A cor preta representa a cor de fundo. Um conjunto de entradas brancas, ligadas, constitui uma forma. O objectivo consiste em determinar o número de formas na matriz. Duas entradas brancas na matriz pertencem a uma mesma forma, se existir um caminho de uma à outra através de entradas brancas. Um caminho consiste em entradas sucessivas com coordenadas (i,j) e (k,l), tais que |i-k| =< 1 e |j-l| =< 1.
O seu programa não poderá usar nenhum dos seguintes símbolos:

         arg  =..  functor  name

A matriz será especificada como uma lista de listas contendo preto ou branco --isto deverá ser óbvio a partir dos exemplos-- que constituirá o primeiro argumento do predicado formas/2 que terá de escrever. O segundo argumento deverá ser unificado com o número de formas no primeiro argumento. Eis alguns exemplos:

         ?- formas([ [preto, branco,preto],
                     [branco,preto, preto],
                     [branco,preto,branco] ], N).
            N = 2

         ?- formas([ [branco,branco,branco],
                     [branco,preto, preto],
                     [branco,preto, preto],
                     [branco,preto, preto] ], N).
            N = 1




1999-04-01