Ми можемо згорнути натуральні числа у прямокутній спіралі:
17--16--15--14--13
| |
18 5---4---3 12
| | | |
19 6 1---2 11
| | |
20 7---8---9--10
|
21--22--23--24--25
Але тепер, коли їх у нас на прямокутній сітці, ми можемо розмотувати спіраль у іншому порядку, наприклад, рухаючись за годинниковою стрілкою, починаючи на північ:
17 16--15--14--13
| | |
18 5 4---3 12
| | | | |
19 6 1 2 11
| | | |
20 7---8---9 10
| |
21--22--23--24--25
Отримана послідовність явно є перестановкою натуральних чисел:
1, 4, 3, 2, 9, 8, 7, 6, 5, 16, 15, 14, 13, 12, 11, 10, 25, 24, 23, 22, 21, 20, 19, 18, 17, ...
Ваше завдання - обчислити цю послідовність. ( OEIS A020703 , але попередження про спойлер: воно містить ще одне цікаве визначення та кілька формул, які ви, можливо, захочете розібратися самостійно.)
Веселий факт: усі 8 можливих замовлень на розмотування мають власну запис OEIS.
Змагання
Давши додатне ціле число n
, поверніть n
th елемент вищезазначеної послідовності.
Ви можете написати програму або функцію, взявши введення через STDIN (або найближчу альтернативу), аргумент командного рядка або аргумент функції та вивівши результат через STDOUT (або найближчу альтернативу), значення повернення функції або параметр функції (out).
Діють стандартні правила гольф-коду .
Випробування
1 1
2 4
3 3
4 2
5 9
6 8
7 7
8 6
9 5
100 82
111 111
633 669
1000 986
5000 4942
9802 10000
10000 9802
Для повного списку до та включно n = 11131
див. B-файл на OEIS .