W dalekim królestwie królowa szachów codziennie spaceruje po spiralnej ścieżce, ponumerowanej od 1 do n
, nie dbając o samą spiralę, ale po prostu wykonując ruchy królowej, tak jak na szachownicy. Królowa jest ukochana przez swoich poddanych i odnotowują każdy kwadrat, który odwiedza na swojej drodze. Biorąc pod uwagę, że królowa może rozpocząć swój spacer na dowolnym kwadracie, a kończy go na dowolnym kwadracie, jaki jest najkrótszy spacer królowej?
Wyzwanie
Biorąc pod uwagę spiralę liczb całkowitych na prostokątnej siatce, napisz funkcję, która zwraca jedną z najkrótszych możliwych ścieżek (liczoną przez liczbę przejechanych komórek) między dwiema liczbami na tej spiralnej siatce, używając ruchów szachowej królowej.
Na przykład od 16
do 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
Niektóre możliwe ścieżki obejmują 16, 4, 2, 10, 25
i 16, 5, 1, 9, 25
.
Zasady
- Dane wejściowe będą stanowić dowolne dwie dodatnie liczby całkowite.
- Dane wyjściowe będą ścieżką liczb całkowitych (w tym obu punktów końcowych) w poprzek spirali przy użyciu tylko ruchów ortogonalnych i ukośnych.
- Długość ścieżki jest liczona przez liczbę przejechanych komórek.
- Twoja odpowiedź może być programem lub funkcją.
- To jest kod golfowy, więc wygrywa najmniejsza liczba bajtów.
Jak zawsze, jeśli problem jest niejasny, daj mi znać. Powodzenia i dobrej gry w golfa!
Przypadki testowe
>>> 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