In einem fernen Königreich macht eine Schachkönigin täglich einen Spaziergang über einen von 1 bis 1 nummerierten n
Spiralpfad, ohne sich darum zu kümmern, der Spirale selbst zu folgen, sondern einfach die Bewegungen der Königin wie auf einem Schachbrett auszuführen. Die Königin wird von ihren Untertanen geliebt, und sie notieren sich jedes Feld, das sie auf ihrem Weg besucht. Was ist der kürzeste Spaziergang der Königin, den sie machen kann, wenn die Königin ihren Spaziergang auf einem beliebigen Feld beginnen und auf einem beliebigen Feld beenden kann?
Die Herausforderung
Schreiben Sie bei einer gegebenen Spirale von ganzen Zahlen in einem rechteckigen Gitter eine Funktion, die einen der kürzesten möglichen Pfade (gezählt nach der Anzahl der zurückgelegten Zellen) zwischen zwei Zahlen in diesem Spiralgitter mit den Zügen einer Schachkönigin zurückgibt .
Zum Beispiel von 16
bis 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
Einige mögliche Pfade umfassen 16, 4, 2, 10, 25
und 16, 5, 1, 9, 25
.
Regeln
- Die Eingabe besteht aus zwei beliebigen positiven ganzen Zahlen.
- Die Ausgabe ist ein Pfad von ganzen Zahlen (einschließlich beider Endpunkte) über die Spirale, wobei nur orthogonale und diagonale Bewegungen verwendet werden.
- Die Länge eines Pfades wird durch die Anzahl der zurückgelegten Zellen gezählt.
- Ihre Antwort kann ein Programm oder eine Funktion sein.
- Dies ist Code Golf, also gewinnt die kleinste Anzahl von Bytes.
Wie immer, wenn das Problem unklar ist, lassen Sie es mich bitte wissen. Viel Glück und gutes Golfen!
Testfälle
>>> 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