У далекому королівстві шахова королева щоденно ходить по спіральній доріжці, пронумерованій від 1 до n
, не піклуючись про те, щоб слідкувати за самою спіраллю, а просто робила кроки королеви так, як вона робила б на шаховій дошці. Королеву улюблені її піддані, і вони відзначають кожен квадрат, який вона відвідує на своєму шляху. Враховуючи, що королева може розпочати свою прогулянку на будь-якій площі і закінчити її на будь-якій площі, яка найкоротша королева прогулянка, яку вона може пройти?
Змагання
Давши спіраль цілих чисел на прямокутній сітці, напишіть функцію, яка повертає один із найкоротших можливих шляхів (підраховується за кількістю пройдених комірок) між двома числами на цій спіральній сітці, використовуючи ходи шахової королеви.
Наприклад, від 16
до 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
Деякі можливі шляхи включають 16, 4, 2, 10, 25
і 16, 5, 1, 9, 25
.
Правила
- Вхідними даними будуть будь-які два натуральних числа.
- Виведенням буде шлях цілих чисел (включаючи обидві кінцеві точки) по спіралі, використовуючи лише ортогональні та діагональні ходи.
- Довжина шляху обчислюється кількістю пройдених комірок.
- Ваша відповідь може бути програмою або функцією.
- Це кодовий гольф, тому виграє найменша кількість байтів.
Як завжди, якщо проблема неясна, будь ласка, повідомте мене про це. Успіхів і хорошого гольфу!
Тестові справи
>>> 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