Tâche principale
Votre tâche consiste à imprimer les nombres entiers par ordre décroissant, en partant de 1 et en augmentant au fur et à mesure que vous appuyez à nouveau sur 1, jusqu’à ce que l’entrée donnée soit atteinte, puis imprimez le reste jusqu’à ce que vous frappiez à nouveau 1. Exemple avec entrée 6
:
1
21
321
4321
54321
654321
Without newlines (valid output):
121321432154321654321
Note latérale: il s’agit du numéro A004736 dans le système OEIS. En outre, le premier exemple (avec des nouvelles lignes) est une sortie non valide, comme spécifié dans les règles.
Contribution
Votre code peut prendre n'importe quel type d’entrée (graphique, STDIN) sous forme d’entier ou de nombre.
Sortie
Votre code doit sortir la séquence décrite ci-dessus, jusqu'à atteindre le nombre saisi, puis terminer la sortie jusqu'à ce qu'il atteigne à nouveau 1. La sortie peut être n'importe quoi, donc des nombres, des chaînes, des entiers ou une sortie graphique. Il est nécessaire d'imprimer un seul numéro (pas de saut de ligne s'il s'agit d'une chaîne). Votre sortie peut être insérée et créée avec autant de caractères que vous le souhaitez (par exemple []
).
Comme il y a eu un malentendu, voici un modèle de regex sur lequel vous pouvez essayer vos sorties.
^(\D*(\d)+\D*)$
Règles
- La sortie doit être un nombre entier, ne pas être divisé par quoi que ce soit, même pas de nouvelles lignes.
- L'algorithme ne doit pas vérifier si la première instance de N apparaît de quelque manière que ce soit (par exemple, le
21
in121321
), mais plutôt pour la première instance de N en tant que nombre réel. - Un seul retour à la ligne est autorisé.
- Le traitement des entrées négatives est entièrement votre choix, les nombres négatifs ne sont pas des cas à tester.
Cas de test
Input: 6
Output: 121321432154321654321
Input: 1
Output: 1
Input: 26
Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321222120191817161514131211109876543212322212019181716151413121110987654321242322212019181716151413121110987654321252423222120191817161514131211109876543212625242322212019181716151413121110987654321
Input: 0
Output: 0, Empty, or Error
Input: 21
Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321
Merci @ Emigna, j'ai utilisé son algorithme pour calculer ces cas de test.
Gagnant
Le gagnant a été choisi! C'était la réponse d' ErikGolfer avec un impressionnant 5 octets! Toutes nos félicitations!
The output must be a full number ...
Voulez-vous dire la séquence entière, ou seulement les différentes chaînes (1, 2-1, 3-1 ...)? Votre premier exemple ne semble pas correspondre à cette déclaration.[1, 21, 321, 4321, 54321, 654321]
Celui-ci, ça va?[1,2,1,3,2,1,4,3,2,1,5,4,3,2,1,6,5,4,3,2,1]
Ou parlez-vous simplement de tableaux contenant un seul élément, comme[121321432154321654321]
?mickey321211mouse
. Vraiment les\D
parties n'ont aucune raison d'être làRéponses:
Gelée , 5 octets
Essayez-le en ligne!
La formule n'est pas la mienne.
Je soupçonne que trop de choses se passent ici ...
[REPONSE ACCEPTE] J'aurais donné 5 rep à Dennis, mais ce n'est pas une réputation d'échange. Dennis m'a montré le
VV
comportement. À ma grande surprise, c'est plus court que 05AB1E.la source
05AB1E , 6 octets
Essayez-le en ligne!
Explication
Exemple d'entrée 4
la source
JavaScript (ES6), 37 octets
Démo
Afficher l'extrait de code
Autre méthode pour n <10, 34 octets (non en concurrence)
En JavaScript, les chaînes sont immuables. Par conséquent, il est impossible de modifier le contenu du Nième caractère d'une chaîne
s
en affectant une nouvelle valeur às[N]
.Cependant, l'expression
++s[N]
est valide et est évaluée comme prévu, même si la chaîne reste inchangée. Par exemple:Et par extension:
la source
V,
29282723191716 octets8 octets sauvés grâce à @DJMcMayhem
3 octets sauvegardés grâce à @ nmjcman101
Personnages cachés:
C-x
est Ctrl + x.Essayez-le en ligne! prend une entrée via des arguments en ligne de commande
Hexdump:
Explication
Maintenant, il ressemble à:
a continué...
GIF (obsolète)
(pour arg
6
)la source
òy$jpkgJ
À
, vous n'aurez pas le 0 en haut pour pouvoir supprimer le x. APPARENTLY aò
fermera añ
pour que vous puissiez supprimer le secondñ
(qui est l'octet que vous enregistrez). Lien parce que ça n'avait aucun sensC #,
726965 octetsSi la sortie peut simplement être renvoyée plutôt que d'être écrite sur la console
C #,
716864 octetsMerci à @VisualMelon pour avoir économisé beaucoup d'octets
Testez-le ici (avec humour, le compilateur en ligne rompt à un nombre supérieur à 420)
la source
j=1
dans la boucle for et enregistrer un point-virgule. Vous pouvez également déclarerj
aveci
, pour enregistrer le fichierint
. Lei++
peut également être déplacé vers l'j=i
affectation, en sauvegardant un octet. Vous devriez aussi pouvoir remplacer lei<=n
aveci<n
si vous le faites à laj=++i
place et que vous commencezi
par0
.for(int i=0,j;i<n;)
;) Il n'est pas non plus nécessaire d'utiliser la{}
boucle for interne.Pure bash, 34
Deux niveaux d'expansion de corset. Avec l'entrée
6
, le premier niveau se développe à{1..1} {2..1} {3..1} {4..1} {5..1} {6..1}
. Cela se développe ensuite à1 2 1 3 2 1 4 3 2 1 5 4 3 2 1 6 5 4 3 2 1
, qui est mélangé à une chaîne avecprintf %s
.eval
's sont requis aux deux niveaux d'expansion - pour le premier niveau afin que le$1
paramètre soit développé en premier, et pour le deuxième niveau afin qu'il se développe après le premier niveau.Essayez-le en ligne
la source
Perl, 21 octets
Utilisations
-E
sans frais supplémentaires.Usage
la source
Pyth, 7 octets
Un programme qui prend l'entrée d'un entier et imprime le résultat.
Essayez-le en ligne!
Comment ça marche
la source
jk_hC.:S
soit plus long, mais beau travail!GeoGebra , 67 octets
Chaque ligne est entrée séparément dans la barre de saisie. L'entrée est prise à partir d'une zone de saisie.
Voici un gif de l'exécution:
Comment ça marche
La saisie
1
attribue implicitementa
à1
et laInputBox
commande associe une zone de saisie àa
. Ensuite, pour chaquei
entrée{1, 2, 3, ..., a}
, la liste{i, i-1, i-2, ..., 1}
est créée à l'aide de laSequence
commande et chaque élémentj
de cette liste est convertie en chaîne à l'aide deText
. Enfin,Join
fusionne toutes les listes etSum
concatène tous les éléments en un seul objet texte affiché.la source
Python 2, 51 octets
la source
Retina ,
2622 bytesLe nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
Explication
Convertir une entrée en unaire.
À chaque position, insérez le préfixe jusqu’à ce point, ainsi qu’un saut de ligne. Cela crée une plage unaire allant de
2
àn+1
, une valeur par ligne.Remplacez chacun
1
par le nombre de caractères après celui-ci sur la même ligne. Cela tourne quelque chose comme11111
dans43210
.Supprimez tous les sauts de ligne et les zéros qui les précèdent.
la source
Langue GameMaker, 65 octets
la source
APL, 10 octets
Par exemple:
Explication:
⍳
: obtenez les nombres de 1 à N.⍳¨∘
: pour chacune d’elles, obtenez les nombres de 1 à N.⌽∘
: inverser cette liste⍕¨∘
: obtenir la représentation en caractères de chaque élément (pour ne pas afficher les nombres avec des espaces entre eux)∊
: aplatit le tableau résultantla source
∘
est la composition des fonctions, j’ai donné l’explication dans l’ordre dans lequel les fonctions sont réellement évaluéesPython 2,
7168 octetsJe parie qu'une solution récursive pourrait être plus courte, mais j'ai du mal à formuler cela en une.
Essayez-le en ligne
la source
En fait 8 octets
La première fois que vous postez une réponse dans En fait, vous pouvez probablement jouer au golf.
Comment ça marche
Essayez-le en ligne!
la source
R♂R♂RΣεj
est le même nombre d'octets, mais il peut être plus facile d'écrire une explication pour.Brachylog , 8 octets
Essayez-le en ligne!
Explication
la source
Perl 6 , 22 octets
Un lambda qui retourne une chaîne.
( Essayez-le en ligne. )
Explication:
1..$_
: Gamme d'entiers ...(1 2 3 4)
[,] 1..$_
: Réduisez ("pliez") l'opérateur de virgule ...(1 2 3 4)
[\,] 1..$_
: Avec résultats intermédiaires ( réduction triangulaire ) ...((1) (1 2) (1 2 3) (1 2 3 4))
[\R,] 1..$_
: Appliquer le méta-opérateur d' inversion à la virgule ...((1) (2 1) (3 2 1) (4 3 2 1))
[~] flat ...
: Supprimer l'imbrication de la liste et replier l'opérateur de concaténage ...1213214321
la source
Haskell, 35 octets
Exemple d'utilisation:
f 6
->"121321432154321654321"
.Pour tous les nombres
x
de1 ... x
la listex,x-1, ... ,1
, convertissez-les en chaîne et concaténez-les en une seule chaîne. Encore une fois, concaténez ces chaînes en une seule chaîne.la source
C89, 54 octets
56 -2 = 54 grâce à ErikGolfer!
la source
(j=i++)
au lieu de(j=i)
et supprimer le dernieri++
(non testé).i,j;f(n){j=++i;while(j)printf("%d",j--);i-n?f(n):0;}
(52 octets)Python 3,
87928374 octetsRéponse plus courte en utilisant la récursivité:
Ce n'est peut-être pas le plus court, mais il est uniquement réalisé avec la compréhension de liste de Python!
(Edité pour ajouter la fonction d'impression et supprimer le \ n)
(Edité pour supprimer la fonction d'impression et changer n + 1, k + 1 en n, k + 2)
la source
`i`
place destr(i)
. Et vous pouvez utiliser"".join(...)
au lieu de"".join([...])
, etrange(1,k,-1)
pour supprimer le fichier[...][::-1]
.n>0
peut êtren
. Et je voulais direrange(n,0,-1)
. Et utilisern and f(n-1)+...)or""
.Pyth, 8 octets
Explication
la source
05AB1E , 6 octets
Essayez-le en ligne!
la source
Mathematica, 36 octets
Lance une série d’avertissements qui peuvent être ignorés en toute sécurité.
Explication
En utilisant l’entrée
5
comme exemple:Crée une plage
{1, 2, 3, 4, 5}
.Range
est listable afin que nous puissions lui donner une liste pour n’importe lequel de ses arguments et il sera automatiquement passé au-dessus de cet argument. Cela nous donne donc un tas de listes inversées:Prochain:
Cela joint la liste imbriquée à la chaîne vide. Comme la liste imbriquée ne contient aucune chaîne, elle ne peut pas joindre les valeurs (c'est là que sont générés les avertissements), mais
""<>
a pour effet secondaire d’aplatir la liste. Donc cela nous donneVient maintenant la belle fonctionnalité de Mathematica qui
Map
ne se soucie pas de la structure sur laquelle elle est en train d'être cartographiée Vous l'appliquez normalement à une liste, mais cela fonctionne avec n'importe quelle tête.f /@ h[a, b, c]
vous donne simplementh[f[a], f[b], f[c]]
. Dans notre cas, la tête estStringJoin
et les valeurs sont les entiers.Donc, cela transforme simplement les nombres entiers en chaînes. À ce stade, il
StringJoin[...]
sait quoi faire avec et les joint tous en une seule chaîne:la source
GolfScript , 14 octets
Essayez-le en ligne!
Méthode habituelle bien sûr, mais c'est GolfScript.
Explication de ce code VAST :
Notez que la sortie est sous la forme d’un nombre unique. Trailing
\n
.la source
R,
383344 octetsPrend une entrée dans STDIN, et boucle de 1 à n, créant la séquence i à 1 pour chaque étape et l’imprimant.
Edit: remplacé
seq(i,1)
par lai:1
sauvegarde de 5 octets et montrant pourquoi je ne devrais pas jouer au golf pendant les réunions.la source
101
si l'entrée est0
.if((n=scan())>0)for(i in 1:n)cat(i:1,sep="")
fait le tour.if(n<-scan())
devrait être suffisant.MATL ,
14 à11 octetsEssayez-le en ligne!
Explication
la source
not split up by anything
, ne pense pas que le second est autorisé.brainfuck, 17 octets
Explication
Essayez-le en ligne!
la source
Python ,
635759 octetsUne solution récursive qui fonctionne à la fois en Python 2 et 3. Cela peut probablement être joué davantage. Suggestions de golf bienvenues! Essayez-le en ligne!
Edit: -6 octets grâce à Jonathan Allan. +2 octets, merci à mbomb007 pour avoir signalé un problème avec ma réponse.
Ungolfing
la source
map
pour économiser 6 octets:lambda n:n and f(n-1)+"".join(map(str,range(n,0,-1)))or""
PHP,
353433 octetsEnregistré un octet parce que j'ai mal compté, merci Titus! Et un autre!
Exécuter en ligne de commande avec
-r
.Réponse assez simple, boucle de 1 à travers notre entrée
n
, collant le numéro sur le début de la chaîne et l'imprimer.la source
while($i++<$argv[1])echo$s=$i.$s;
CJam, 13 octets
interprète
la source
ri{),:)W%}%