Considérez la séquence suivante:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ...
Les chiffres pairs commencent à 0 et sont regroupés en séries de longueur croissante. Ils sont organisés de manière cyclique, ce qui signifie qu'ils sont triés par ordre croissant jusqu'à ce que 8 soit atteint, puis reviennent de 0 . 1 sépare les séries de chiffres pairs et démarre également la séquence. Voyons comment cette séquence est formée:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, ...
- ---- ------- ---------- -------------
run length: 1 2 3 4 5 ...
position of 1: X X X X X X ...
even sequence: 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8 ...
Méthodes d'entrée et de sortie acceptables:
Recevez un entier N en entrée et sortez le N ème terme de cette séquence.
Recevoir un entier N en entrée et sortez les N premiers termes de cette séquence.
Imprimez la séquence indéfiniment.
Vous pouvez choisir l'indexation 0 ou 1 pour les deux premières méthodes.
Vous pouvez rivaliser dans n'importe quel langage de programmation , tout en utilisant les méthodes d'entrée et de sortie standard . Les failles standard sont interdites. C'est le code-golf , donc le code le plus court dans chaque langue l'emporte.
Réponses:
Haskell ,
5046 octetsEssayez-le en ligne!
1#cycle[0,2..8]
renvoie la séquence sous forme de liste infinie.-4 octets grâce à Ørjan Johansen!
la source
#
un simple nombre. Essayez-le en ligne!Gelée , 10 octets
Renvoie les n premiers éléments de la séquence.
Essayez-le en ligne!
Comment ça fonctionne
la source
Unhalve
... N'est-ce pas justeDouble
?H
est divisé par deux , donc ne l'Ḥ
est pas .ÆA
est arccosine ,ÆẠ
est non arccosine .Husk ,
121110 octetsEssayez-le en ligne!
Imprime la séquence indéfiniment.
Alternativement:
Essayez-le en ligne!
Explication
Pour la solution alternative:
Nous pourrions aussi le faire
...ΘCN...
, parceΘ
que "préfixe l'élément par défaut", qui ajoute un zéro pour les listes d'entiers et une liste vide pour les listes de listes.la source
Python 3 , 52 octets
Prend un index basé sur 1 et renvoie True ou un flottant intégral .
Essayez-le en ligne!
la source
Python 2 , 51 octets
Imprime toute la séquence.
Essayez-le en ligne!
la source
APL, 25 octets
Renvoie le nième terme.
Explication
la source
APL (Dyalog Unicode) ,
525956 octetsEssayez-le en ligne!
Ceci est un tradfn ( trad itional f unctio n ) avec un argument
k
et renvoyant les premiersk
éléments de la séquence.Merci à @GalenIvanov d'avoir signalé une erreur dans la fonction. Merci à @ Adám pour 3 octets.
Comment ça fonctionne:
Voici un
Dfn
( d IRECT f unctio n ) et une fonction tacite qui résolvent aussi le défi, à la fois aimablement fourni par @ Adám.{⍵⍴1,∊1,⍨¨j⍴¨(+\¯1+j←⍳⍵)⌽¨⊂0,2×⍳4}
Essayez-le en ligne!⊢⍴1,∘∊1,⍨¨⍳⍴¨(⊂0,2×⍳4)⌽⍨¨(+\¯1+⍳)
Essayez-le en ligne!la source
JavaScript (ES6),
625452 octetsRenvoie le N ème terme de la séquence, indexé 0.
Démo
Afficher l'extrait de code
la source
C (gcc), 84 octets
Essayez-le en ligne!
Une fonction (
f()
) qui imprime la séquence à l'infini, séparée par des espaces.i
est la longueur du cycle pair actuel.j
est l'indice dans le cycle pair actuel(2*j+++i*i-i)%10
donne le nombre pair correct, étant donné i et j (et les incréments j), équivalent à ((j + Tr (i))% 5) * 2, où Tr (x) est le xième nombre triangulaire (qui est le nombre de paires les nombres qui ont été imprimés avant la même exécution en cours;la source
Java 8, 96 octets
Imprime indéfiniment, chaque numéro sur une nouvelle ligne.
Explication:
Essayez-le ici.
la source
Lot, 85 octets
Sort le Nième terme de la séquence. Fonctionne en calculant le nombre triangulaire suivant.
la source
Perl 5 , 44 octets
Essayez-le en ligne!
Sortie infinie
la source
{...;redo}
au lieu dedo{...}while 1
J ,
464240 octets-6 octets grâce au cole
Génère les N premiers termes de cette séquence.
Comment ça fonctionne:
10|[:+:i.
- génère une liste de longueur N de 0 2 4 6 8 0 2 4 ... Il prend simplement le mod 10 des éléments doublés d'une liste d'entiers commençant à 0.[:;[:#:&.>2^i.
- génère un masque de bits pour couper la liste ci-dessus.(1 signifie commencer): 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 ... Il trouve 2 à la puissance des entiers non négatifs consécutifs, les convertit en binaire, aplatit le liste et prend uniquement les N premiers éléments, de sorte que la longueur des deux listes est la même.
;@(1,&.><;.1)
- divise (coupe) la liste des chiffres pairs en sous-listes selon la carte des uns et des zéros, ajoute la sous-liste à 1 et aplatit finalement la liste résultante]{.
- ne prend que les N premiers éléments, en supprimant les numéros supplémentaires dans la liste en raison des 1 ajoutés.Essayez-le en ligne!
la source
{.({.[:;[:#:&.>2^i.);@(1,&.><;.1)(10|2*i.)
. Les changements que j'ai faits ont consisté à utiliser des crochets et à refaçonner la dent droite de la fourche pour profiter du fonctionnement des fourches. J'aime le2^i.
truc. J'essaie de travailler sur la dent gauche de la fourche maintenant.(10|2*i.)
->10|2*i.
Lisp commun, 74 octets
Essayez-le en ligne!
Imprime la séquence indéfiniment.
la source
Perl 5, 35 octets
essayez-le en ligne
la source
Gelée , 17 octets
Essayez-le en ligne!
la source
Proton , 55 octets
Essayez-le en ligne!
Imprime la séquence indéfiniment
la source
i=0 j=-2while1{
...-2while
est comme Python etwhile1
c'est parce que j'ai fait des identifiants qui ne peuvent pas être un mot-clé suivi d'un nombreJava (OpenJDK 8) , 107 octets
Essayez-le en ligne!
la source
Mathematica, 68 octets
Renvoie le Nième terme
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 61 octets
Essayez-le en ligne!
la source
JavaScript, 45 octets
1 indexé:
0 indexé:
Afficher l'extrait de code
la source
Rubis ,
4846 octetsEssayez-le en ligne!
Imprimez la séquence indéfiniment
la source
bash, 42 octets
ou 34 si valide
essayez-le en ligne
la source