Você está na página 1de 17

Grupo:

Eric Pereira
Pedro Henrique
SUMRIO:
1. ALGORITMO:
* Funo MAIN responsvel por chamar as sub funes.
(Posio das rainhas, analise diagonal, analise horizontal e
impresso de jogos vlidos.)
* Em posio das rainhas, a funo MAIN envia a posio
individual de cada rainha para funo POSICAO_DINAMICA()
atravs de um conjunto de 8 laos FOR. Cada lao FOR
representa uma coluna do tabuleiro, dominado por uma
rainha.
* Qualquer variao de qualquer lao FOR gera um novo
tabuleiro.
* A variao dos laos FOR ocorrem de maneira anloga a um
relgio digital.
* Execuo de Exemplo.


*Depois da gerao de um novo Tabuleiro, a funo MAIN
varre o novo tabuleiro em busca da posio das rainhas.
*Ao encontrar uma rainha chama as funes de analise
HORIZONTAL(i,j) e DIAGONAL(i,j) para verificar se essa
rainha mata outra.


*Caso haja mate ou no, continua a buscar a posio das
outras rainhas.
*Contadores armazenam e incrementam o retorno de
HORIZONTAL(i,j) e VERTICAL(i,j).

*Terminado a verificao do tabuleiro, verifica-se o retorno
fornecido pelo tabuleiro, armazenado em MATE_RH e
MATE_RD.
*Se o retorno de cada rainha do tabuleiro for zero o tabuleiro
valido e ser contado e impresso.
* Por fim, zera os contadores MATE_RH e MATE_RD para poder
gerar um novo tabuleiro.
* Da funo principal, vem a coluna (a, b, ..., h) e a linha (A,B, ..., H) de cada
rainha. A funo POSICAO_DINAMICA( i, j ) recebe essas coordenadas.
* Estabelece uma condio inicial. Caso i=0 (A, B, ... , H =0), rainha na primeira
linha e zera todos os outros elementos da coluna. Caso contrario, avana a rainha
em uma linha e zera a posio anterior da coluna.
* Cada alterao armazenada na matriz global inteira MATRIX[8][8]
*Recebe a linha e a coluna da rainha.
*Grava em uma varivel interna inteira a posio da
coluna em que se encontra a rainha.
*Dois laos WHILE so necessrios. Um verifica da
esquerda para direita e outro verifica da direita para
esquerda a existncia de alguma rainha no percurso.
*Antes de cada lao recupera-se a posio da rainha.
*Caso exista alguma rainha, um contador
incrementado.
*Contador diferente de zero faz o a funo
HORIZONTAL(i ,j) retornar 1, caso contrario retorna 0.

*Recebe a linha e a coluna de posio da rainha.
*Grava em duas varivel internas inteiras a posio da
linha e coluna em que se encontra a rainha.
*Faz uso de 4 laos WHILE. O Primeiro faz o caminho na
diagonal para baixo (/). O segundo o caminho na
diagonal para cima(/). O terceira lao WHILE caminha
na diagonal para cima(\) e o quarto na diagonal para
baixo (\).
*Antes de cada lao recupera-se a posio da rainha.
*Caso exista alguma rainha no percurso diagonal da
rainha analisada, um contador incrementado.
*Contador zero faz a funo retornar 0, caso contrario
retorna 1.


Execuo de Exemplo.
1. Tempo de Execuo. Caso fosse acrescentado algumas condies
a mais, o programa executaria com pelo menos metade do tempo de
execuo atual. Na parte de anlise horizontal e diagonal por mais
que haja mate de rainha na primeira rainha analisada, o tabuleiro
continuar a ser analisado para as outras rainhas mesmo j sabendo
que o tabuleiro no ser vlido. Uma condio de parada na parte de
anlise diminuiria em muito o tempo de execuo!

Você também pode gostar