En un reino lejano, una reina del ajedrez da un paseo diario a través de un camino en espiral, numerado del 1 al n
, sin preocuparse por seguir la espiral en sí, sino simplemente haciendo los movimientos de la reina como lo haría en un tablero de ajedrez. La reina es amada por sus súbditos, y toman nota de cada cuadro que visita en su camino. Dado que la reina puede comenzar su caminata en cualquier casilla y terminarla en cualquier casilla, ¿cuál es la caminata más corta que puede dar la reina?
El reto
Dada una espiral de enteros en una cuadrícula rectangular, escriba una función que devuelva uno de los caminos más cortos posibles (contados por el número de celdas recorridas) entre dos números en esta cuadrícula espiral usando los movimientos de una reina de ajedrez.
Por ejemplo, de 16
a 25
:
25 10 11 12 13
24 9 2 3 14
23 8 1 4 15
22 7 6 5 16
21 20 19 18 17
Algunos caminos posibles incluyen 16, 4, 2, 10, 25
y 16, 5, 1, 9, 25
.
Reglas
- La entrada será dos enteros positivos.
- La salida será una ruta de enteros (incluidos ambos puntos finales) a través de la espiral utilizando solo movimientos ortogonales y diagonales.
- La longitud de una ruta se cuenta por el número de celdas recorridas.
- Su respuesta puede ser un programa o una función.
- Este es el código de golf, por lo que gana el menor número de bytes.
Como siempre, si el problema no está claro, hágamelo saber. ¡Buena suerte y buen golf!
Casos de prueba
>>> queen_spiral(4, 5)
4, 5
>>> queen_spiral(13, 20)
13, 3, 1, 7, 20
>>> queen_spiral(14, 14)
14
>>> queen_spiral(10, 3)
10, 11, 3
>>> queen_spiral(16, 25)
16, 4, 2, 10, 25
>>> queen_spiral(80, 1)
80, 48, 24, 8, 1