Desafío:
Dado un tablero de ajedrez, genera la menor cantidad de movimientos que tomaría (suponiendo que el negro no se mueva en absoluto) para reinar una pieza roja, si es posible.
reglas :
El lado rojo siempre estará en la parte inferior, sin embargo, sus piezas pueden comenzar en cualquier fila (incluso la fila del rey a la que deben llegar). Las piezas negras son estacionarias , lo que significa que no se mueven entre los movimientos del rojo, pero se retiran del tablero cuando se capturan. Tenga en cuenta que las piezas pueden comenzar en cualquier espacio del tablero, incluso uno al lado del otro. No es así como se juegan las fichas normales, pero su programa debe ser capaz de resolverlas. (Ver entrada 5) Sin embargo, las piezas de verificación solo deben moverse en diagonal (ver entrada 3). Se permite la captura hacia atrás si la primera captura es hacia adelante en la cadena (ver entrada 7).
Entrada:
Un tablero de ajedrez de 8x8, con espacios de tablero definidos como los siguientes caracteres (siéntase libre de usar alternativas siempre que sean consistentes):
. - Vacío
R - Pieza (s) roja (s)
B - Pieza (s) negra (s)
Salida:
El número más pequeño de movimientos que tomaría una pieza roja para ser 'kinged' al ingresar a la fila del rey en la fila superior del tablero (lado negro), 0 si no se requieren movimientos (una pieza roja comenzó en la fila del rey), o un número negativo si es imposible reinar una pieza roja (es decir, el negro ocupa toda su primera fila).
Entrada 1:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Salida 1:
7
Entrada 2:
. . . . . . . .
. . . . . . . .
. . . . . B . .
. . . . . . . .
. . . B . . . .
. . . . . . . .
. B . . . . . .
R . . . . . . .
Salida 2:
2
Entrada 3:
. B . B . B . B
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Salida 3:
-1
Entrada 4:
. . . . . . . R
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Salida 4:
0
Entrada 5:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. B . . B . . .
B . . . . B . .
. B . B . . . .
. . B . . B . .
. . . R R . . .
Salida 5:
4
Entrada 6:
. . . . . . . .
. . . . . . . .
. B . . . . . .
. . B . . . . .
. B . B . . . .
. . . . R . . .
. . . B . . . .
. . . . R . . .
Salida 6:
2
Entrada 7:
. . . . . . . .
. . . . . . . .
. . B . . . . .
. . . . . . . .
. . B . . . . .
. B . B . B . .
. . . . B . . .
. . . . . R . R
Salida 7:
4
Puntuación:
Este es el código de golf , por lo que gana el código más corto en bytes.
Respuestas:
JavaScript (ES6),
354322bytesToma una matriz como entrada con:
Devuelve el número óptimo de movimientos, o 99 si no hay solución.
Es muy rápido pero se puede jugar mucho más al golf.
fuente