Todos hemos oído hablar del rompecabezas del Knight's Tour : encuentra una ruta para un caballero que pase por todos los cuadrados en un tablero de ajedrez. Pero seamos honestos, es un poco aburrido. Entonces, demos un desafío al caballero.
Tarea
Escriba un programa que lleve al caballero a través de todos los cuadrados en un tablero de ajedrez de tamaño arbitrario y de forma arbitraria. Debe tomar el tablero de ajedrez como entrada y salida del conjunto de movimientos y la posición inicial. En el caso de un tablero imposible, debería generar el conjunto de movimientos y la posición inicial para un recorrido con la mayor longitud posible. Nota: el caballero no necesita hacer un viaje de ida y vuelta; suponga que tiene otra forma de llegar a casa.
Las piezas de ajedrez son pequeñas, por lo que su código debe ser lo suficientemente pequeño para que el caballero pueda llevarlo.
Entrada
La entrada será una representación basada en cadenas o matriz de un tablero de ajedrez, donde un valor no en blanco / verdadero es un cuadrado, y un valor en blanco / falso es un espacio vacío. Por razones de simplicidad usaré #
s y S dispuestos en una rejilla para los ejemplos.
Salida
La salida será dos enteros grandes, seguidos de una serie de enteros de 4 bits, o el equivalente de su idioma. Los dos enteros grandes representarán las coordenadas iniciales, y los siguientes números representarán un movimiento como este:
7 0
6 1
K
5 2
4 3
donde K
está la posición antes del movimiento, y el número es la posición después del movimiento.
Ejemplos
Como hay muchas posibles soluciones para el rompecabezas de Knight's Tour, solo proporcionaré ejemplos de resultados. Puede haber más salidas.
###
# #
###
0 0 3 0 5 2 7 4 1
Nuevo desafío: presenta más ejemplos