Imaginez énumérer les éléments des losanges qui se développent [1],[1,3,1],[1,3,5,3,1],…
(uniquement des nombres impairs tels qu'ils s'alignent bien). Cela ressemblerait à ceci, notez que vous commencez toujours à énumérer avec 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) …
Maintenant, si vous commencez à additionner les colonnes ( [1],[2],[1,3,5],[4],[5],[2,6,10],…
), vous obtenez la séquence losange . Ce sont les 100 premiers éléments de ladite séquence:
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
Vous êtes libre de choisir l'une de ces trois méthodes d'entrée / sortie (vous n'aurez pas besoin de gérer des entrées invalides):
- Étant donné un entier n, sortir le n ème élément de cette séquence (indexé 0 ou 1, votre choix)
- Étant donné un nombre entier n de sortie n premiers éléments de cette séquence
- Imprimer / renvoyer la séquence indéfiniment
Cas de test
Veuillez vous référer aux 100 premiers termes ci-dessus, voici quelques exemples plus grands (indexés 1):
101 -> 101
443 -> 1329
1000 -> 49000
1984 -> 164672
2017 -> 34289
2018 -> 30270
3000 -> 153000
JavaScript (ES7),
4241 octets1 octet enregistré grâce à @ovs
0 indexé. Expression de forme fermée dérivée de A004737 .
Cas de test
Afficher l'extrait de code
la source
Befunge,
6260 octetsEssayez-le en ligne!
Explication
Nous commençons par lire le numéro d'élément à base unique, n , à partir de stdin, et enregistrer un doublon.
Ensuite, nous déterminons dans quel losange nous nous trouvons, en comptant un entier, r , jusqu'à
r*r >= n
.La colonne décalée par rapport au côté droit du losange, c , est
r*r - n
.Pour obtenir ce décalage réfléchi autour de l'axe central, nous vérifions si
c >= r
.Et si c'est le cas, alors le c réfléchi devient
r*2 - 2 - c
.Une fois que nous avons le c réfléchi , la somme de la colonne est simple
(c*2 + 1) * n
.la source
APL (Dyalog) , 18 octets
Essayez-le en ligne!
la source
Gelée , 8 octets
Essayez-le en ligne!
Comment ça fonctionne
la source