Podemos acumular os números naturais em uma espiral retangular:
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
Mas agora que as temos em uma grade retangular, podemos desenrolar a espiral em uma ordem diferente, por exemplo, indo no sentido horário, começando no norte:
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
A sequência resultante é claramente uma permutação dos números naturais:
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, ...
Sua tarefa é calcular esta sequência. ( OEIS A020703 , mas aviso de spoiler: contém outra definição interessante e várias fórmulas que você pode querer descobrir).
Curiosidade: todos os 8 pedidos possíveis de desenrolamento têm sua própria entrada no OEIS.
O desafio
Dado um número inteiro positivo n
, retorne o n
th elemento da sequência acima.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento da linha de comando ou argumento da função e emitindo o resultado via STDOUT (ou alternativa mais próxima), valor de retorno da função ou parâmetro da função (saída).
Aplicam-se as regras de código-golfe padrão .
Casos de teste
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
Para obter uma lista completa, incluindo n = 11131
o arquivo b no OEIS, inclusive .