introduction
Inspiré par la vidéo très récente The Trapped Knight - Numberphile , j'ai trouvé un défi.
La séquence de chevalier piégé est une séquence entière finie de longueur 2016, à partir de 1, et a les règles de construction suivantes:
- Écrivez une spirale numérique de la manière suivante:
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 ...
- Placez un chevalier sur 1.
- Déplacez le chevalier sur la grille avec le plus petit nombre possible qui n'a pas été visité auparavant, selon les règles des échecs (c'est-à-dire 2 unités verticalement et 1 unité horizontalement, ou vice versa).
- Répétez jusqu'à ce que le chevalier se coince.
Voici les trois premières étapes:
Étape 1
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
Les mouvements possibles sont 10, 12, 14, 16, 18, 20, 22, 24, dont le plus petit est 10, donc le deuxième terme est 10.
Étape 2
4 [ 3] 12 [29] 54
( 1) 2 11 28 [53]
8 9 <10> 27 52
[23] 24 25 26 [51]
46 [47] 48 [49] 50
Les mouvements possibles sont 1 , 3, 23, 29, 47, 49, 51, 53, dont le plus petit est 3, donc le troisième terme est 3.
Étape 3
35 [34] 33 [32] 31
[16] 15 14 13 [30]
5 4 < 3> 12 29
[ 6] ( 1) 2 11 [28]
7 [ 8] 9 (10) 27
Les mouvements possibles sont 6, 8, 10 , 16, 28, 30, 32, 34, parmi lesquels le plus petit est 6, donc le quatrième terme est 6.
La séquence commence par:
1 10 3 6 9 4 7 2 5 8 11 14 ...
et se termine par
... 2099 2284 2477 2096 2281 2474 2675 2884 3101 2880 2467 2084
Défi
Écrivez un programme ou une fonction plus courte, en recevant un entier dans la plage [1, 2016]
(ou [0, 2015]
si l'index 0 est utilisé) en entrée, sortez le nombre à cet index dans la séquence de chevalier piégé. Vous pouvez choisir d'indexer la séquence avec 0 ou 1, mais vous devez spécifier le schéma d'indexation que vous utilisez.
Cas de test (1 indexé)
n | s(n)
-----+-----
1 | 1
2 | 10
3 | 3
6 | 4
11 | 11
21 | 23
51 | 95
101 | 65
201 | 235
501 | 761
1001 | 1069
2001 | 1925
2016 | 2084
Pour toutes les sorties possibles, veuillez vous référer à cette page .
Critères gagnants
Le code le plus court de chaque langue gagne. Des restrictions sur les échappatoires standard s'appliquent.
12851850258