Défi:
Ici, nous avons les 100 premiers éléments d'une séquence:
6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,...
Comment se forme cette séquence? Nous avons d'abord le nombre dans la plage [6, 1]
(toutes les valeurs possibles d'un seul dé du plus haut au plus bas). Nous avons alors les nombres [66..61, 56..51, 46..41, 36..31, 26..21, 16..11]
(toutes les valeurs concaténées possibles de deux dés du plus haut au plus bas). Etc.
Ceci est lié à la séquence OEIS A057436: Contient uniquement les chiffres 1 à 6 , mais avec tous les nombres avec une quantité égale de chiffres triés en arrière dans la séquence.
Le défi est de choisir l'une de ces trois options pour votre fonction / programme avec la séquence ci-dessus:
- Prendre une entrée et la sortie du -ième valeur de cette séquence, où il peut être 0 ou 1-indexé-indexé.
- Prenez une entrée et sortez les premières ou valeurs de cette séquence.
- Sortez indéfiniment les valeurs de la séquence.
Bien sûr, tout format de sortie raisonnable peut être utilisé. Peut être sous forme de chaînes / entiers / décimales / etc .; pourrait être une liste (infinie) / tableau / flux / etc .; pourrait être sorti avec un délimiteur espace / virgule / nouvelle ligne / autre vers STDOUT; etc. etc. Veuillez indiquer les E / S et les options que vous utilisez dans votre réponse!
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Voici quelques cas de test plus importants si vous choisissez l'option 1:
n 0-indexed output 1-indexed output
500 5624 5625
750 4526 4531
1000 3432 3433
9329 11111 11112
9330 666666 11111
9331 666665 666666
10000 663632 663633
100000 6131232 6131233
Réponses:
Gelée , 5 octets
Essayez-le en ligne!
Nième valeur indexée 1.
la source
Perl 6 ,
2423 octets-1 octet grâce à nwellnhof
Essayez-le en ligne!
Génère la séquence séparée à l'infini par des espaces / retours à la ligne. Ou, pour quelques octets supplémentaires, nous pouvons avoir une liste infinie paresseuse dans laquelle nous pouvons indexer à la place.
Perl 6 , 27 octets
Essayez-le en ligne!
Explication:
la source
Python 2 ,
393834 octetsEssayez-le en ligne!
Sorties nombre indexé 1
la source
R , 43 octets
Essayez-le en ligne!
Imprime la séquence indéfiniment
la source
6 5 4 3 2 166 65 64...
Bash, 31 octets
TIO
mise à jour à partir des commentaires, la nième valeur indexée 1, + outils GNU + perl, 64 octets, 7 octets enregistrés grâce à @manatwork
64 octets
la source
bc<<<obase=6\;$1
. Mais si vous passezdc
, il n'y a rien à échapper:dc<<<6o$1p
.dc<<<6o$1p|perl -pe '1while s/(.)0/($1-1).6/e;s/0//'|tr 1-6 654321
MATL , 11 octets
Sort les valeurs indéfiniment.
Essayez-le en ligne!
Explication
la source
Haskell,
3834 octetsUne liste infinie de nombres:
Essayez-le en ligne!
Deux solutions antérieures qui donnent des listes infinies de chaînes, chacune utilisant 38 octets:
Essayez-le en ligne!
Essayez-le en ligne!
la source
replicate
.JavaScript (ES6), 26 octets
Essayez-le en ligne!
la source
Haskell , 28 octets
Essayez-le en ligne!
Produit une liste infinie de nombres
l
. Utiliser<$>
et<*>
couper un octet:29 octets
Essayez-le en ligne!
L'approche est similaire à la réponse Haskell Output All String answer chaîne d'entrée fixe "654321", et en sautant la sortie de chaîne vide en changeant où elle est ajoutée.
30 octets
Essayez-le en ligne!
la source
0
(ou""
), mais je n'ai pas trouvé de moyen bon marché de ne pas l'avoir dans le résultat ...05AB1E , 10 octets
Sort la séquence indéfiniment.
Essayez-le en ligne!
Explication
la source
¸
au début crée une liste contenant une chaîne vide. Et 2 octets de moins que la solution que j'ai utilisée pour générer les cas de test, donc bien sûr un +1 de ma part. :)Perl 5,
4037 octets-3 octets grâce à @Xcali
37 octets
40 octets
la source
Java (JDK) , 48 octets
Essayez-le en ligne!
Cela renvoie le n ème élément indexé 1 .
La récursion semble battre la lambda itérative.
Version itérative, 49 octets
Essayez-le en ligne!
la source
Brachylog ,
1311 octetsMerci à Fatalize pour 2 octets
Sorties indéfiniment. Essayez-le en ligne!
Explication
la source
6~d{⟧₁∋}ᵐẉ⊥
. Vous terminez votre programme avec "false", ce qui le forcera à imprimer toutes les solutions.C # (.NET Core) , 38 octets
Essayez-le en ligne!
Sort la nième valeur (basée sur 1).
la source
Japt, 14 octets
Il doit y avoir une solution plus courte utilisant des méthodes de fonction et / ou un produit cartésien mais (pour l'instant?) Le mieux que je puisse gérer est un portage de la solution JS d'Arnauld alors assurez-vous de lui aussi voter.
Essayez-le ou testez les conditions
0-1000
la source
Wolfram Language (Mathematica) ,
8878 octetsEssayez-le en ligne!
économisé 4 + 6 octets grâce à @IanMiller
La liste est indexée sur 1, affiche le nième numéro.
la source
Mathematica, 56 octets
la source
Pip
-l
, 16 octetsSort la séquence indéfiniment. Essayez-le en ligne!
Explication
Le
-l
drapeau signifie que les listes sont imprimées avec chaque élément sur sa propre ligne; si un élément est lui-même une liste, ses éléments sont concaténés sans séparateur. Par exemple, la liste[1 [2 3] [4 [5 6]]]
sera imprimée commeAvec cela clarifié:
Après la première itération de boucle,
x
ressemble à[[6;6];[6;5];[6;4];...;[1;1]]
; après la seconde itération,[[[6;6];6];[[6;6];5];[[6;6];4];...;[[1;1];1]]
; etc. Nous n'avons pas à nous soucier d'aplatir les sous-listes, car-l
cela le fait efficacement pour nous.la source
Fusain , 18 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. 1 indexé. Explication:
Contribution
n
Répétez jusqu'à ce que
n
zéro.Réduisez le
-n
modulo6
, puis augmentez le résultat et la sortie de droite à gauche.Décrémenter
n
et diviser par entier6
.la source
Retina 0.8.2 , 36 octets
Essayez-le en ligne! Le lien inclut des cas de test. 1 indexé. Explication:
Convertissez en unaire. (Retina 1 économiserait 2 octets ici.)
Convertissez en base bijective 6 par divmod répété. Notez que l'utilisation de
+
signifie que le chiffre extrait est toujours un nombre de 1 à 6 au lieu de 0 à 5 pour la conversion régulière en base 6. ((_{6})*
est plus rapide mais coûte des octets pour extraire le quotient.)Transposez les chiffres de sorte que les 6 viennent en premier et les 1 en dernier. (Il n'y a pas de 7 ou de 0 mais cela me permet d'utiliser le
d
raccourci.la source
Cubix , 22 octets
Cela produira la séquence indéfiniment. L'idée générale est qu'il a un nombre de base auquel 6 - 1 est ajouté. Pour chaque ajout, le résultat est multiplié par 10, qui est poussé au bas de la pile pour être utilisé plus tard dans la séquence. La base est ensuite sautée et la base suivante a commencé.
Essayez-le en ligne!
Regardez-le courir
la source
C # (.NET Core) , impression infinie,
181 18088 octets.Malheureusement, il fige repl.it au lieu de produire correctement dans la version infinie telle qu'écrite (je crois que c'est une erreur dans repl.it, car il ne sort pas comme le programme boucle comme il se doit), donc toute personne espérant tester a besoin d'un ordinateur. Si vous ajoutez une lecture à l'avant de la boucle, cela fonctionne également dans repl.it.
Sorties vers la console, évidemment.
Sur tout système fini, le code finira très probablement par se bloquer avec une erreur de mémoire insuffisante.Retravaillé le code pour utiliser le lambda de @dana.
Essayez-le en ligne!
la source
Forth (gforth) , 63 octets
Essayez-le en ligne!
Sorties indexées 0 nième valeur
Explication
Si N est inférieur à 6, affichez la valeur absolue de N - 6. Sinon, obtenez le quotient et le reste de la division de N par 6. Appelez la fonction récursivement sur le quotient, puis appelez-la sur le reste.
Explication du code
la source
APL (NARS), 27 caractères, 54 octets
traduisez la solution par dana /codegolf//a/179980 dans APL ... test:
la source
C #, imprimer du début à n, ??? octets
Nous remercions @dana pour l'expression lambda.
Opération: exécutez avec la ligne de commande 0e argument égal à l'entier que vous souhaitez compter. (Il convient de noter qu'il
a[0]
s'agit d'une référence au tableau args de ligne de commande autrement non mentionné, et je ne sais pas comment le compter.)la source