Imagine enumerar os elementos do rhombi que crescem [1],[1,3,1],[1,3,5,3,1],…
(apenas números ímpares para que eles se alinhem bem). Isso seria da seguinte maneira, observe que você sempre começa a enumerar com 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) …
Agora, se você começar a somar as colunas ( [1],[2],[1,3,5],[4],[5],[2,6,10],…
), obterá a sequência de losango . Estes são os 100 primeiros elementos da referida sequência:
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
Você é livre para escolher um desses três métodos de entrada / saída (não precisará lidar com entradas inválidas):
- Dado um número inteiro n, o n ésimo elemento nessa sequência (indexado com 0 ou 1, sua escolha)
- Dado um número inteiro n, os primeiros n elementos da sequência
- Imprimir / retornar a sequência indefinidamente
Casos de teste
Consulte os 100 primeiros termos acima, eis alguns exemplos maiores (indexados 1):
101 -> 101
443 -> 1329
1000 -> 49000
1984 -> 164672
2017 -> 34289
2018 -> 30270
3000 -> 153000
JavaScript (ES7),
4241 bytesGuardado 1 byte graças a @ovs
Indexado a 0. Uma expressão de forma fechada derivada de A004737 .
Casos de teste
Mostrar snippet de código
fonte
Befunge,
6260 bytesExperimente online!
Explicação
Começamos lendo o número do elemento de base única, n , de stdin e salvando uma duplicata.
Então, determinamos em que losango estamos, contando um número inteiro, r , até
r*r >= n
.O deslocamento da coluna do lado direito do losango, c , é
r*r - n
.Para que esse deslocamento seja refletido em torno do eixo central, verificamos se
c >= r
.E se for, então o c refletido se torna
r*2 - 2 - c
.Depois de termos c refletido , a soma da coluna é simples
(c*2 + 1) * n
.fonte
APL (Dyalog) , 18 bytes
Experimente online!
fonte
Geléia , 8 bytes
Experimente online!
Como funciona
fonte