Nous pouvons enrouler les nombres naturels dans une spirale rectangulaire:
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
Mais maintenant que nous les avons sur une grille rectangulaire, nous pouvons dérouler la spirale dans un ordre différent, par exemple dans le sens horaire, en commençant vers le nord:
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
La séquence résultante est clairement une permutation des nombres naturels:
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, ...
Votre tâche consiste à calculer cette séquence. ( OEIS A020703 , mais avertissement de spoiler: il contient une autre définition intéressante et plusieurs formules que vous voudrez peut-être comprendre vous-même.)
Fait amusant: les 8 commandes de déroulement possibles ont leur propre entrée OEIS.
Le défi
Étant donné un entier positif n
, retournez le n
e élément de la séquence ci-dessus.
Vous pouvez écrire un programme ou une fonction, en prenant une entrée via STDIN (ou l'alternative la plus proche), un argument de ligne de commande ou un argument de fonction et en sortant le résultat via STDOUT (ou l'alternative la plus proche), la valeur de retour de la fonction ou le paramètre de la fonction (out).
Les règles de code-golf standard s'appliquent.
Cas de test
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
Pour une liste complète jusqu'à et y compris n = 11131
voir le fichier b sur OEIS .