La séquence «Regardez et dites» ou «Dites ce que vous voyez» est une série de nombres où chacun décrit le dernier.
1
11 (one one)
21 (two ones)
1211 (one two, one one)
111221 (one one, one two, two ones)
312211 (three ones, two twos, one one)
et ainsi de suite ... https://oeis.org/A005150
Quoi qu'il en soit, il s'agit d'un défi de golf de code normal (le nombre de victoires par octet) pour créer un programme qui prend deux arguments, un nombre initial et le nombre d'itérations. Par exemple, si vous avez branché "1" et "2", le résultat serait "21". Si vous branchez "2" et "4" le résultat serait "132112". S'amuser!
Réponses:
Pyth,
108 octets-2 octets par @FryAmTheEggman
Explication:
Essayez-le ici .
la source
ussrG8Qz
CJam, 8 octets
Le format d'entrée est le nombre initial en premier, les itérations en second, séparés par des espaces.
Testez-le ici.
Explication
Le tableau est également aplati avant d'être imprimé afin que le résultat soit juste le nombre requis.
la source
JavaScript, 57 octets
La récursivité fonctionne bien pour ce problème. Le premier paramètre est le nombre initial sous forme de chaîne et le second est le nombre d'itérations.
la source
b=>F=a=>b--?F(a.replace(/(.)\1*/g,c=>c.length+c[0])):a
j'aiMATL , 9 octets
Les entrées sont: nombre d'itérations, nombre initial.
Essayez-le en ligne!
la source
R, 87 octets
Non golfé et expliqué
la source
Perl 6, 63 octets
C'est aussi court que possible pour l'instant, il pourrait y avoir des drapeaux délicats qui pourraient le réduire, je ne suis pas sûr
la source
Rubis, 63 octets
Un programme complet, puisque la question semble demander cela. Prend l'entrée comme arguments de ligne de commande.
Non,
gsub!
ne peut pas être utilisé, car les chaînes$*
sont gelées: /la source
-p
indicateur pour enregistrer des octets? Si vous l'utilisez,gsub
fonctionne sur une ligne de STDIN comme s'il l'était$_.gsub!
. Ensuite, l'argument de ligne de commande correspond aux itérations, doncn,=$*
, et l'autre entrée est lue à partir de STDIN.Rétine ,
464527 octetsMartin a fait beaucoup pour aider au golf.
Essayez-le en ligne
Prend entrée au format:
<start>
est le nombre initial.<count>
est en unaire, tous les traits de soulignement et représente le nombre d'itérations effectuées.Itération unique,
2016 octets:la source
Haskell , 62 octets
Essayez-le en ligne!
la source
JavaScript ES6, 71 octets
Prend l'entrée sous forme de chaîne et de nombre.
la source
('1',2)
me donne12
, quand ça devrait être21
. Votre longueur doit précéder le caractère du remplacement.Perl 5, 50 octets
Les arguments sont dans l'ordre inverse (nombre d'itérations puis graine). Exemple:
la source
$_
au lieu desay
, je suppose, mais je ne l'ai pas testé. La solution actuelle est un programme.05AB1E , 9 octets (non concurrent)
Corrigé en raison des commentaires d'Emigna, voir ci-dessous / modifications.
Essayez-le en ligne!
la source
F
au début et prendre les arguments commeiterations,initialNo
Dgs
pargy
.y
faire dans ce contexte?R ,
6157 octets-4 grâce à @JayCe, juste au moment où j'étais sûr que cela ne pourrait pas être plus simple!
Essayez-le en ligne!
la source
t(sapply(z,c))
appel est intelligent.Mathematica,
8173 octetsla source
Gelée , 6 octets (non concurrent)
Essayez-le en ligne!
la source
Stax , 10 octets
Exécutez et déboguez en ligne!
Trop d'octets dépensés sur le bon format d'E / S ...
Explication
Utilise la version décompressée pour expliquer.
La partie essentielle est
D|R{rm:f
(8 octets).Si la première entrée peut être considérée comme un tableau de chiffres, tout le programme peut être écrit en 9 octets: Exécuter et déboguer en ligne!
la source
Python 3, 138 octets
J'ai utilisé une approche récursive.
La fonction accepte deux entrées
a
etb
comme décrit.Je suis étonné de voir à quel point les entrées sont laconiques! Peut-être que quelqu'un viendra aussi avec une meilleure méthode Python.
la source
Perl, 38 + 2 octets
Nécessite le
-p
drapeau:L'entrée est une chaîne de plusieurs lignes:
Si toutes les étapes sont également requises, nous pouvons les modifier comme suit, soit 44 + 2 octets:
la source
Pylônes , 11
Comment ça marche:
la source
SmileBASIC,
10098 octetsImprime toutes les étapes.
T/T
est là pour terminer le programme lorsque T est 0.la source
APL (Dyalog Classic) , 22 octets
Essayez-le en ligne!
la source
Rétine , 27 octets
Essayez-le en ligne!
la source
K (ngn / k) , 30 octets
Essayez-le en ligne!
la source
Python 3.6,
1009893 octetsEssayez-le en ligne!
Notez que cela crée un lambda qui prend une chaîne et un entier et renvoie une chaîne. Exemple:
f('1', 5) == '312211'
Recherche tous les caractères répétés (
((.)\2*)
regex), crée une chaîne f à partir de leur longueur et du caractère lui-même (r'{len("\1")}\2'
), puis l'évalue. Utilise la récursivité sur le compteur (n and ...f(s,n-1)... or s
) pour éviter d'avoir à définir une fonction appropriée et une boucle.la source