Em um reino distante, uma rainha do xadrez faz uma caminhada diária por um caminho em espiral, numerado de 1 a n
, não se importando em seguir a própria espiral, mas simplesmente fazendo os movimentos da rainha como faria em um tabuleiro de xadrez. A rainha é amada por seus súditos, e eles anotam cada quadrado que ela visita em seu caminho. Dado que a rainha pode começar sua caminhada em qualquer praça e terminar em qualquer praça, qual é a caminhada mais curta da rainha que ela pode fazer?
O desafio
Dada uma espiral de números inteiros em uma grade retangular, escreva uma função que retorne um dos caminhos mais curtos possíveis (contados pelo número de células viajadas) entre dois números nessa grade espiral usando os movimentos de uma rainha do xadrez.
Por exemplo, de 16
para 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
Alguns caminhos possíveis incluem 16, 4, 2, 10, 25
e 16, 5, 1, 9, 25
.
Regras
- A entrada será dois inteiros positivos.
- A saída será um caminho de números inteiros (incluindo os dois pontos de extremidade) através da espiral, usando apenas movimentos ortogonais e diagonais.
- O comprimento de um caminho é contado pelo número de células percorridas.
- Sua resposta pode ser um programa ou uma função.
- Isso é código de golfe, então o menor número de bytes vence.
Como sempre, se o problema não estiver claro, entre em contato. Boa sorte e bom golfe!
Casos de teste
>>> 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