Todos nós já ouvimos falar do quebra-cabeça do Knight's Tour : encontre uma rota para um cavaleiro que atravessa todos os quadrados de um tabuleiro de xadrez. Mas vamos ser honestos, é um pouco chato. Então, vamos dar ao cavaleiro um desafio.
Tarefa
Escreva um programa que leve o cavaleiro por todos os quadrados em um tabuleiro de xadrez de tamanho arbitrário e tamanho arbitrário. Deve-se considerar o tabuleiro de xadrez como entrada e saída do conjunto de jogadas e da posição inicial. No caso de uma prancha impossível, ela deve exibir o conjunto de jogadas e a posição inicial de um passeio com o maior comprimento possível. Nota: o cavaleiro não precisa fazer uma viagem de ida e volta; suponha que ele tem outra maneira de chegar em casa.
As peças de xadrez são pequenas, portanto seu código precisa ser pequeno o suficiente para o cavaleiro carregar.
Entrada
A entrada será uma representação baseada em string ou em array de um tabuleiro de xadrez, em que um valor não em branco / verdade é um quadrado e um valor em branco / falso é um espaço vazio. Por uma questão de simplicidade, usarei #
s e s dispostos em uma grade para os exemplos.
Resultado
A saída será dois números inteiros grandes, seguidos por uma série de números inteiros de 4 bits ou o equivalente do seu idioma. Os dois números inteiros grandes representarão as coordenadas iniciais e os seguintes números representarão um movimento da seguinte forma:
7 0
6 1
K
5 2
4 3
onde K
está a posição antes da movimentação e o número é a posição após a movimentação.
Exemplos
Como existem muitas soluções possíveis para o quebra-cabeça do Knight's Tour, fornecerei apenas exemplos de resultados. Pode haver mais saídas.
###
# #
###
0 0 3 0 5 2 7 4 1
Novo desafio: crie mais exemplos