Introducción
Inspirado por el video muy reciente The Trapped Knight - Numberphile , se me ocurrió un desafío.
La secuencia de caballero atrapado es una secuencia entera finita de longitud 2016, a partir de 1, y tiene las siguientes reglas de construcción:
- Escriba una espiral numérica de la siguiente manera:
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 ...
- Coloca un caballero en 1.
- Mueva al caballero a la cuadrícula con el número más pequeño posible que no haya sido visitado antes, de acuerdo con las reglas del ajedrez (es decir, 2 unidades verticalmente y 1 unidad horizontalmente, o viceversa).
- Repita hasta que el caballero se atasque.
Aquí están los primeros tres pasos:
Paso 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
Los movimientos posibles son 10, 12, 14, 16, 18, 20, 22, 24, entre los cuales el más pequeño es 10, por lo que el segundo término es 10.
Paso 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
Los movimientos posibles son 1 , 3, 23, 29, 47, 49, 51, 53, entre los cuales el más pequeño es 3, por lo que el tercer término es 3.
Paso 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
Los movimientos posibles son 6, 8, 10 , 16, 28, 30, 32, 34, entre los cuales el más pequeño es 6, por lo que el cuarto término es 6.
La secuencia comienza con:
1 10 3 6 9 4 7 2 5 8 11 14 ...
y termina con
... 2099 2284 2477 2096 2281 2474 2675 2884 3101 2880 2467 2084
Desafío
Escriba un programa o función más corto, recibiendo un número entero en el rango [1, 2016]
(o [0, 2015]
si se usa 0 indexado) como entrada, emite el número en ese índice en la secuencia de caballero atrapado. Puede elegir indexar la secuencia con 0 indexado o 1 indexado, pero debe especificar qué esquema de indexación utiliza.
Casos de prueba (1 indexado)
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
Para todas las salidas posibles, consulte esta página .
Criterios ganadores
El código más corto de cada idioma gana. Se aplican restricciones a las lagunas estándar.
12851850258