In un regno lontano, una regina degli scacchi fa una passeggiata quotidiana attraverso un percorso a spirale, numerato da 1 a n
, non preoccupandosi di seguire la spirale stessa, ma semplicemente facendo le mosse della regina come farebbe su una scacchiera. La regina è amata dai suoi sudditi e prendono nota di ogni piazza che visita sul suo cammino. Dato che la regina può iniziare la sua passeggiata in qualsiasi piazza e finirla in qualsiasi piazza, qual è la passeggiata della regina più breve che può fare?
La sfida
Data una spirale di numeri interi su una griglia rettangolare, scrivi una funzione che restituisca uno dei percorsi più brevi possibili (contati dal numero di celle percorse) tra due numeri su questa griglia a spirale usando le mosse di una regina degli scacchi.
Ad esempio, da 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
Alcuni possibili percorsi includono 16, 4, 2, 10, 25
e 16, 5, 1, 9, 25
.
Regole
- L'input sarà due numeri interi positivi.
- L'output sarà un percorso di numeri interi (inclusi entrambi gli endpoint) attraverso la spirale usando solo mosse ortogonali e diagonali.
- La lunghezza di un percorso viene contata dal numero di celle percorse.
- La tua risposta potrebbe essere un programma o una funzione.
- Questo è il codice golf, quindi vince il minor numero di byte.
Come sempre, se il problema non è chiaro, per favore fatemi sapere. Buona fortuna e buon golf!
Casi test
>>> 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