Bom dia pessoal,
Estou tentando resolver a letra b) da questão 7.22 e agradeceria imenso se alguém não se importasse de tirar uma pequena dúvida minha:
7.22(Passeio do cavalo) Um problema interessante para os fãs de xadrez é o problema do ‘passeio do cavalo’, originalmente proposto pelo matemático Euller. A peça do cavalo pode mover-se em um tabuleiro vazio e tocar cada um dos 64 quadrados somente uma única vez. Aqui, estudamos esse intrigante problema em profundidade.
O cavalo só faz movimentos em forma de L (dois espaços em uma direção e outro em direção perpendicular). Portanto partindo de um quadrado próximo do centro de um tabuleiro de xadrez vazio, o cavalo (rotulado K) pode fazer oito movimentos diferentes (numerados de 0 a 7).
b) Agora vamos desenvolver um aplicativo que moverá o cavalo pelo tabuleiro. O tabuleiro é representado por um array bidimensional oito por oito ‘board’. Cada quadro é inicializado como zero. Descrevemos cada um dos oito movimentos possíveis em termos de seus componentes vertical e horizontal. Por exemplo, um movimento do tipo 0 consiste em mover dois quadrados horizontalmente para a direita e um quadrado verticalmente para cima. Um movimento do tipo 2 consiste em mover um quadrado horizontalmente para a esquerda e dois quadrados verticalmente para cima. Movimentos horizontais para a esquerda e movimentos verticais para cima são indicados com números negativos. Os oitos movimentos podem ser descritos por dois arrays unidimensionais, ‘horizontal’ e ‘vertical’, como segue:
horizontal[ 0 ] = 2 vertical[ 0 ] = -1
horizontal[ 1 ] = 1 vertical[ 1 ] = -2
horizontal[ 2 ] = -1 vertical[ 2 ] = -2
horizontal[ 3 ] = -2 vertical[ 3 ] = -1
horizontal[ 4 ] = -2 vertical[ 4 ] = 1
horizontal[ 5 ] = -1 vertical[ 5 ] = 2
horizontal[ 6 ] = 1 vertical[ 6 ] = 2
horizontal[ 7 ] = 2 vertical[ 7 ] = 1
Faça com que as variáveis currentRow e currentColumn indiquem, respectivamente, a linha e a coluna da posição atual do cavalo. Para fazer um movimento do tipo moveNumber, que que moveNumber está entre 0 e 7, seu aplicativo deve utilizar as instruções:
currentRow += vertical[ moveNumber ];
currentColumn += horizontal[ moveNumber ];
Escreva um aplicativo para mover o cavalo pelo tabuleiro. Mantenha um contador que varia de 1 para 64. Registre a última contagem em cada quadrado para que o cavalo se move. Teste cada movimento potencial para assegurar que o cavalo não saia fora do tabuleiro. Execute o aplicativo. Quantos movimentos o cavalo fez ?
Bom, a minha dúvida é: Nesta letra b), o aplicativo pedido necessariamente não fará o cavalo percorrer todos os quadrados do tabuleiro, ou seja, o contador provavelmente não irá chegar até 64, não é isso!?
Agradeço muito se alguém me tirar essa dúvida.