Défi:
Créez un programme qui prend en entrée un entier positif non nul et sort les 4 nombres suivants dans l'ordre décrit ci-dessous.
Remarque: il n'est pas nécessaire de vérifier si l'entrée est réellement un entier positif non nul
Séquence:
Chaque numéro de cette séquence (à l'exception du premier, qui est l'entrée) doit être composé de n chiffres, où n est un nombre pair. Si nous divisons le nombre en n / 2 paires, pour chaque paire, le premier chiffre doit être le nombre de fois où le deuxième chiffre est apparu dans le numéro précédent
Explication visuelle :
Considérez cet exemple "démarreur de séquence" ou entrée 6577
Le numéro suivant dans la séquence devrait ressembler à ceci 161527
car l'entrée a 1 "6", 1 "5" et 2 "7".
Si l'entrée comporte trop de chiffres (plus de 9 d'un seul chiffre), vous ne pourrez pas obtenir une sortie correcte.
Exemple: 111111111111
(12 1)
Le numéro suivant de la séquence doit décrire 12 1. Ainsi, nous l'avons divisé en 9 1 et 3 1 (somme 9 + 3 = 12)
Numéro suivant:9131
Vous devez itérer 4 fois pour l'entrée et la sortir (soit renvoyer une liste / tableau de 4 entiers, soit la sortir en les séparant avec un espace, les retours à la ligne sont également acceptables)
"Le nombre peut être écrit de différentes manières, comment l'écrire?" :
Si vous y réfléchissez, l'exemple d'entrée 6577
peut également être écrit comme 271516 (deux 7, un 5, un six). Cependant, cette sortie n'est pas valide. Vous devez répéter le nombre de gauche à droite. Ainsi 161527. Si c'était le cas, 7657
vous itéreriez le montant de 7, puis le montant de 6 puis le montant de 5, donc une sortie valide serait271615
Exemple d'E / S:
Entrée: 75
Sortie:1715 211715 12311715 4112131715
Entrée: 1
Sortie:11 21 1211 3112
Entrée: 111111111111
(12 1)
Sortie:9131 192113 31191213 23411912
C'est différent de la question "Dites ce que vous voyez", car les séquences sont différentes: https://oeis.org/A005150 <- Celui-ci renvoie des nombres comme celui-ci:
Input: 1211 Output: 111221
Alors que la séquence que je demande ferait
Entrée: 1211 Sortie: 3112
Les deux séquences sont différentes et nécessitent des algorithmes différents.
Ma séquence demandée: https://oeis.org/A063850 Séquence
"Possible duplicate": https://oeis.org/A005150
Spécifications importantes:
Comme ce n'était pas assez clair pour certaines personnes qui ont essayé de répondre à cette question, la sortie correcte pour k caractères où k> 9 n'est pas "kc" (où c est char) mais 9c (k-9) c etc. 12 1 n'est pas 121
(12 1) mais 9131
(9 1, (12-9) 1 et ainsi de suite)
En cas de doute, votre code est erroné s'il produit un nombre avec un nombre impair de chiffres (comme 121), il devrait avoir une sortie de nombres pairs en raison de la nature de la séquence.
C'est du code-golf donc du code avec le moins d'octets qui gagne.
la source
1111111111111111111
(19 1's )23411912
place de23411219
?Réponses:
PowerShell ,
111104 octetsEssayez-le en ligne!
la source
$i
dans votre boucle, pourquoi ne pas simplement boucler directement comme$z=$args;0..3|%{...
$args
(et j'ai d'abord pensé que j'utiliserais$i
). J'allais le mesurer, mais la question a été close.Python 2 , 116 octets
Essayez-le en ligne!
la source
1111111111111111111
est incorrecte. Devrait être919111
mais donne919121
11
sortie d' entrée devrait être21 1211 3112 132112
, je ne comprends pas pourquoi elle sort111
comme la première itération qui provoque le mauvais05AB1E ,
302321 octetsEssayez-le en ligne!
Explication
la source
Mathematica, 117 octets
Il semble que cela ne devrait pas avoir besoin d'être aussi long.
la source
C # 246 octets
Non golfé:
Essayez-le ici (Tapez l'entrée dans le cadre inférieur une fois sa compilation et appuyez sur ENTRÉE)
la source
Gelée , 27 octets
Essayez-le en ligne!
Les
€
s successifs ne peuvent pas être imbriqués car les chaînes ne peuvent pas être imbriquées.Imbrication avec lien séparé: 27 octets.
Impression au lieu du cumul: 27 octets.
Explication
la source
PHP, 141 octets
Essayez-le en ligne!
la source