Étant donné une chaîne non vide de lettres ASCII minuscules a-z
, sortez cette chaîne à chaque «exécution» consécutive de la même lettre allongée d'une copie de plus de cette lettre.
Par exemple, dddogg
( 3 d
’s, 1 o
, 2 g
’ s) se transforme en ddddooggg
( 4 d
’s, 2 o
’ s, 3 g
’s).
C'est le code-golf : la réponse la plus courte en octets l'emporte.
Cas de test
aabbcccc -> aaabbbccccc sonnette -> ddooorrbbeelll uuuuuuuuuz -> uuuuuuuuuuzz q -> qq xyxyxy -> xxyyxxyyxxyy xxxyyy -> xxxxyyyy
Réponses:
05AB1E , 5 octets
Explication:
Essayez-le en ligne ou en tant que suite de tests .
Enclose est une toute nouvelle construction; c'est la première fois que je l'utilise. Très pratique ;)
05AB1E , 4 octets (non concurrent)
.¡
a été remplacé parγ
dans la dernière mise à jour.la source
dddd
pour le premier élément du tableau sur la pile dans l'explication après l'exécution de "enclose".Ć
?xx -> xxxx
quand ça devrait êtrexx -> xxx
...?Python 3 , 44 octets
Essayez-le en ligne!
la source
Rétine , 11 octets
Essayez-le en ligne!
Remplace chaque séquence de caractères par l'un des caractères de la séquence suivi de la séquence elle-même.
la source
Pyth , 7 octets
Suite de tests .
Comment ça marche
la source
MATL , 5 octets
Essayez-le en ligne!
Explication
Tenez compte des commentaires
'doorbell'
.la source
Alice , 17 octets
Essayez-le en ligne!
Explication
Il s'agit d'un cadre pour les programmes qui fonctionnent entièrement en mode Ordinal et sont essentiellement linéaires (de simples boucles peuvent être écrites, et une est utilisée dans ce programme, mais il est plus difficile de travailler avec un flux de contrôle autrement ramifié ici). Le pointeur d'instructions rebondit en diagonale de haut en bas à travers le code de gauche à droite, puis est décalé d'une cellule par les deux miroirs à la fin, et le recule de droite à gauche, exécutant les cellules qu'il a sautées lors de la première itération. La forme linéarisée (ignorant les miroirs) ressemble alors essentiellement à ceci:
Passons par là:
la source
Gelée , 6 octets
Essayez-le en ligne!
Fonctionne uniquement en tant que programme complet (c'est-à-dire sortie stringifiée).
la source
Brachylog , 8 octets
Essayez-le en ligne!
Explication
la source
~
prendre le pas sur les métaprédicats (ou le changer en opération postfix); si vous le faisiez, vous pourriez le faire en sept.C, 49 octets
Le voir fonctionner en ligne .
la source
Python 2 , 47 octets
Essayez-le en ligne!
la source
C, 53 octets
Essayez-le en ligne!
la source
PHP, 40 octets
Version en ligne
PHP <7,1, 44 octets
Version sans Regex
Version en ligne
la source
Japt , 8 octets
7 octets de code, +1 pour le
-P
drapeau.Testez-le en ligne!
Explication
Cela utilise la
ó
(partition sur falsy) intégrée que je viens d'ajouter hier:la source
Hexagonie , 33 octets
Étendu:
Essayez-le en ligne!
Le pseudo-code est plus ou moins:
la source
JavaScript (ES6),
3330 octetsEssayez-le
la source
brainfuck , 23 octets
Essayez-le en ligne!
Explication
la source
Perl 6 , 18 octets
Essayez-le
Étendu:
la source
05AB1E , 8 octets
Essayez-le en ligne!
Explication:
la source
Haskell, 36 octets
Exemple d'utilisation:
f "aab"
->"aaabb"
. Essayez-le en ligne!Lorsque la chaîne a au moins deux caractères, liez-le
a
au premier,b
au deuxième etc
au reste de la chaîne. La sortie esta
suivie dea
sia
n'est pas égal àb
suivi d'un appel récursif avecb:c
. S'il n'y a qu'un seul caractère, le résultat est deux fois ce caractère.la source
CJam, 10 octets
Essayez-le en ligne!
Explication:
la source
Rubis, 30 octets
la source
Gelée , 5 octets
Essayez-le en ligne!
Comment ça marche
la source
Lot, 140 octets
Prend entrée sur STDIN.
la source
sed,
1815 octets (+1 pour -r)Solution originale
la source
R, 36 octets
la source
PowerShell, 50 octets
Essayez-le en ligne!
la source
Mathematica,
3421 octetsMerci à Martin Ender d'avoir trouvé la bonne façon de le faire dans Mathematica, en économisant 13 octets!
Fonction pure utilisant un tableau de caractères comme formats d'entrée et de sortie.
Split
sépare une liste en ses séries de caractères égaux.##&[#,##]&
est une fonction qui renvoie une séquence d'arguments: le premier argument est alimenté, puis tous les arguments (donc en répétant le premier en particulier); ceci est appliqué (@@@
) à chaque sous-liste de laSplit
liste.la source
##&[#,##]&@@@Split@#&
- être ? (Non testé.)Gather
ne fonctionne pas vraiment s'il y a plusieurs exécutions du même personnage (mais heureusementSplit
un octet plus court de toute façon)Split
dans mon cœur) Magnifique construction dans ton premier commentaire!Java,
15114660 octetsRegex
Détaillé
la source
Matcher
etPattern
? Vous pouvez leString f(String s){return s.replaceAll("((.)\\2*)","$1$2");}
brainfuck , 38 octets
Essayez-le en ligne!
la source
Alice , 12 octets
Deux octets ont été joués grâce à Martin Ender avant même que cette réponse ne soit publiée. Il est plus puissant que vous ne pourriez l'imaginer.
Essayez-le en ligne!
Explication
la source