Imagina enumerar los elementos de rombo que crecen [1],[1,3,1],[1,3,5,3,1],…
(solo números impares para que se alineen bien). Esto se vería de la siguiente manera, tenga en cuenta que siempre comienza a enumerar con 1
:
01
1 02 03 04
1 2 3 4 05 06 07 08 09 …
5 10 11 12
13
(1) (1,3,1) (1,3,5,3,1) (1,3,5,7,5,3,1) …
Ahora, si comienzas a sumar las columnas ( [1],[2],[1,3,5],[4],[5],[2,6,10],…
), obtienes la secuencia de rombos . Estos son los primeros 100 elementos de dicha secuencia:
1,2,9,4,5,18,35,24,9,10,33,60,91,70,45,16,17,54,95,140,189,154,115,72,25,26,81,140,203,270,341,288,231,170,105,36,37,114,195,280,369,462,559,484,405,322,235,144,49,50,153,260,371,486,605,728,855,754,649,540,427,310,189,64,65,198,335,476,621,770,923,1080,1241,1110,975,836,693,546,395,240,81,82,249,420,595,774,957,1144,1335,1530,1729,1564,1395,1222,1045,864,679,490,297,100
IO
Usted es libre de elegir uno de estos tres métodos de entrada / salida (no necesitará manejar entradas no válidas):
- Dado un número entero n de salida del n -ésimo elemento en esa secuencia (0- o 1-indexada, su elección)
- Dado un número entero n salida primeros n elementos de esa secuencia
- Imprime / devuelve la secuencia indefinidamente
Casos de prueba
Consulte los primeros 100 términos anteriores, aquí hay algunos ejemplos más grandes (1 indexado):
101 -> 101
443 -> 1329
1000 -> 49000
1984 -> 164672
2017 -> 34289
2018 -> 30270
3000 -> 153000
JavaScript (ES7),
4241 bytesGuardado 1 byte gracias a @ovs
0 indexado. Una expresión de forma cerrada derivada de A004737 .
Casos de prueba
Mostrar fragmento de código
fuente
Befunge,
6260 bytesPruébalo en línea!
Explicación
Comenzamos leyendo el número de elemento basado en uno, n , de stdin, y guardando un duplicado.
Luego determinamos en qué rombo estamos, contando un número entero, r , hasta
r*r >= n
.La columna desplazada desde el lado derecho del rombo, c , es
r*r - n
.Para obtener ese desplazamiento reflejado alrededor del eje central, verificamos si
c >= r
.Y si es así, entonces la c reflejada se convierte
r*2 - 2 - c
.Una vez que tenemos la c reflejada , la suma de la columna es simplemente
(c*2 + 1) * n
.fuente
APL (Dyalog) , 18 bytes
Pruébalo en línea!
fuente
Jalea , 8 bytes
Pruébalo en línea!
Cómo funciona
fuente