introduction
Observons la chaîne suivante:
AABBCCDDEFFGG
Vous pouvez voir que chaque lettre a été dupliquée , à l'exception de la lettre E
. Cela signifie que la lettre E
a été dédoublée . Donc, la seule chose que nous devons faire ici est d'inverser ce processus, ce qui nous donne les éléments suivants non dédupliquées chaîne:
AABBCCDDEEFFGG
Prenons un exemple plus difficile:
AAAABBBCCCCDD
Vous pouvez voir qu'il y a un nombre impair de suites B
, ce qui signifie que l'un des fichiers a BB
été dédupliqué de la chaîne d'origine. Il nous suffit de dé-dupliquer cette lettre, qui nous donne:
AAAABBBBCCCCDD
Le défi
Compte tenu d' un non-vide dédupliquées chaîne, composée de seulement des caractères alphabétiques (soit uniquement en majuscules ou en minuscules seulement), le retour non dédupliquées chaîne. Vous pouvez supposer qu'il y aura toujours au moins un caractère dédupliqué dans la chaîne.
Cas de test
AAABBBCCCCDDDD --> AAAABBBBCCCCDDDD
HEY --> HHEEYY
AAAAAAA --> AAAAAAAA
N --> NN
OOQQO --> OOQQOO
ABBB --> AABBBB
ABBA --> AABBAA
C'est du code-golf , donc la soumission valide la plus courte en octets gagne!
AABBBB
.ABBB
carte àAABBBB
, pasAABBBBBB
?A BB B
. Les caractères qui ne sont pas associés (et donc non dupliqués) doivent être dupliqués, ceAA BB BB
qui correspond à la chaîne non dédupliquée.Réponses:
MATL , 7 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Prenons
'ABBA'
comme exemple l'entrée.la source
Rétine , 11 octets
Essayez-le en ligne - contient tous les cas de test
la source
Perl, 16 octets
15 octets de code +
-p
drapeau.Pour l'exécuter:
la source
Haskell, 36 octets
Exemple d'utilisation:
u "OOQQO"
->"OOQQOO"
.Si la chaîne a au moins 2 éléments, prenez deux copies du premier et ajoutez un appel récursif avec
S'il y a moins de deux éléments (un ou zéro), prenez deux copies de la liste.
la source
Brachylog , 17 octets
Essayez-le en ligne!
Explication
la source
Ruby, 21 octets
20 octets plus le
-p
drapeau.la source
JavaScript (ES6),
37 à30 octetsÉconomisé 7 octets en utilisant le '$ 1 $ 1' beaucoup plus efficace comme le faisaient [autre] [réponses]
Cas de test
Afficher l'extrait de code
la source
Mathematica, 41 octets
Fonction sans nom qui entre une chaîne et en sort une chaîne. Dédupliquer complètement puis complètement non dédupliqué. Pas vraiment court, mais je ne pourrais pas faire mieux pour le moment.
la source
Befunge 98 , 24 octets
Essayez-le en ligne!
$
peut être facilement remplacé par-
, et le second@
avec;
.Je pense que cela peut être joué plus loin en raison
-
du début des deux-,
(ou$,
plus) et-\,
.Comment?
la source
Java 7, 58 octets
Ungolfed:
Code de test:
Essayez ici.
Sortie:
la source
PHP, 65 octets, pas de regex
prend en entrée l'argument de la ligne de commande. Courez avec
-r
.regex? En PHP, l'expression régulière utilisée par la plupart des réponses duplique chaque caractère. serait 44 octets:
la source
Brain-Flak 69 Octets
Comprend +3 pour
-c
Essayez-le en ligne!
Explication:
la source
Gelée , 9 octets
Essayez-le en ligne!
la source
V 10 octets
TryItOnline
Juste une recherche et remplacer regex comme tout le reste dans le fil. La seule différence est que je peux remplacer tout ce qui nécessiterait un
\
devant avec le caractère ayant la même valeur ASCII, mais le bit haut défini. (Donc(
, 00101000 devient¨
, 10101000)la source
Perl 6 , 17 octets
avec l'option de ligne de commande -p
Exemple:
la source
Raquette 261 octets
Ungolfed:
Essai:
Sortie:
la source
05AB1E , 10 octets
Essayez-le en ligne!
Explication
la source
Python3,
102 à94 octetsMerci à xnor d’ avoir économisé 8 octets! -> bithack.
la source
x+x%2
commex&-2
.s.count(c)&-2
et il a renvoyé une chaîne vide ...: / Des pensées?x+1&-2
devrait le faire. Les choses vont à elles-mêmes et les chances se rapprochent.R, 81 octets
Lit une chaîne de stdin, divise en vecteur de caractères et effectue un codage de longueur d'exécution (rle). Répétez ensuite les valeurs de chaque élément à partir du rôle, de la somme des longueurs et des longueurs mod
2
.Si nous pouvons lire les entrées séparées par un espace (implicitement sous forme de vecteur / tableau de caractères), nous pouvons alors ignorer la partie division et le programme réduit à 64 octets:
la source
> <> (Poisson) 39 octets
Je suis sûr que cela peut être joué beaucoup au golf avec une technique différente.
Il prend une entrée et compare à l'élément de pile actuel. S'il est différent, il imprimera le premier élément de pile deux fois, si le même élément les imprime tous les deux.
La pile à vide reçoit un 0 qui n'imprime rien et peut donc être ajoutée à tout moment.
la source
Pyth, 15 octets
Vérifiez tous les cas de test ici.
Merci à Luis Mendo pour la méthodologie.
Explication
Comme souvent, j’ai le sentiment que cela pourrait être plus court. Je pense qu'il devrait exister un meilleur moyen d'extraire des éléments de la liste que ce que j'utilise ici.
la source
PowerShell , 28 octets
Essayez-le en ligne! (inclut tous les cas de test)
Le port de la rétine répond . Les seuls points à noter sont ceux que nous avons
$args
au lieu de l’habituel$args[0]
(puisque l’-replace
itération sera faite sur chaque élément du tableau d’entrée, nous pouvons jouer en dehors de l’index), et les'$1$1'
guillemets simples doivent être remplacés par la regex variables plutôt que d'être traitées comme des variables PowerShell (ce qui se produirait si elles étaient doubles guillemets).la source
C, 67 octets
Appeler avec:
la source
brainfuck, 22 octets
Essayez-le en ligne.
Imprime le caractère actuel deux fois, sauf s'il est égal à un caractère qui vient d'être imprimé deux fois.
la source