Bei einer nicht leeren Zeichenfolge aus ASCII-Kleinbuchstaben a-z
geben Sie diese Zeichenfolge mit jedem aufeinanderfolgenden „Durchlauf“ desselben Buchstabens aus, der um eine weitere Kopie dieses Buchstabens verlängert wird.
Zum Beispiel wird dddogg
( 3 d
, 1 o
, 2 g
) zu ddddooggg
( 4 d
, 2 o
, 3 g
).
Das ist Code-Golf : Die kürzeste Antwort in Bytes gewinnt.
Testfälle
aabbcccc -> aaabbbccccc türklingel -> ddooorrbbeelll uuuuuuuuuz -> uuuuuuuuuzz q -> qq xyxyxy -> xxyyxxyyxxyy xxxyyy -> xxxxyyyy
Antworten:
05AB1E , 5 Bytes
Erläuterung:
Probieren Sie es online oder als Testsuite aus .
Enclose ist ein ziemlich neues Produkt. Es ist das erste Mal, dass ich es benutzt habe. Sehr angenehm ;)
05AB1E , 4 Bytes (nicht konkurrierend)
.¡
wurde durchγ
das neueste Update ersetzt.quelle
dddd
für das erste Element des Arrays auf dem Stapel in der Erklärung, nachdem "einschließen" ausgeführt wird.Ć
?xx -> xxxx
wann sollte es seinxx -> xxx
...?Python 3 , 44 Bytes
Probieren Sie es online!
quelle
Retina , 11 Bytes
Probieren Sie es online!
Ersetzt jede Zeichenfolge durch eine der Zeichenfolgen, gefolgt von der Folge selbst.
quelle
Pyth , 7 Bytes
Testsuite .
Wie es funktioniert
quelle
MATL , 5 Bytes
Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
'doorbell'
.quelle
Alice , 17 Bytes
Probieren Sie es online!
Erläuterung
Dies ist ein Framework für Programme, die vollständig im Ordinal-Modus arbeiten und im Wesentlichen linear sind (einfache Schleifen können geschrieben werden, und eine wird in diesem Programm verwendet, aber es ist schwieriger, hier mit einem ansonsten verzweigten Steuerungsfluss zu arbeiten). Der Befehlszeiger springt diagonal von links nach rechts auf und ab, wird dann von den beiden Spiegeln am Ende um eine Zelle verschoben und von rechts nach links zurückgeschoben, wobei die Zellen ausgeführt werden, die er bei der ersten Iteration übersprungen hat. Die linearisierte Form (ohne Berücksichtigung der Spiegel) sieht dann im Wesentlichen so aus:
Lass uns das durchgehen:
quelle
Gelee , 6 Bytes
Probieren Sie es online!
Funktioniert nur als volles Programm (dh stringifizierte Ausgabe).
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
~
sicherstellen , dass Metapredicates Vorrang haben (oder es in eine Postfix-Operation ändern). Wenn du das tust, könntest du das in sieben machen.C 49 Bytes
Sehen Sie , wie es online funktioniert .
quelle
Python 2 , 47 Bytes
Probieren Sie es online!
quelle
C 53 Bytes
Probieren Sie es online!
quelle
PHP, 40 Bytes
Online Version
PHP <7.1, 44 Bytes
Version ohne Regex
Online Version
quelle
Japt , 8 Bytes
7 Byte Code, +1 für das
-P
Flag.Online testen!
Erläuterung
Dies verwendet die
ó
(Partition auf falsch) eingebaute, die ich gestern hinzugefügt habe:quelle
Hexagony , 33 Bytes
Erweitert:
Probieren Sie es online!
Der Pseudocode ist mehr oder weniger:
quelle
JavaScript (ES6),
33-30BytesVersuch es
quelle
Brainfuck , 23 Bytes
Probieren Sie es online!
Erläuterung
quelle
Perl 6 , 18 Bytes
Versuch es
Erweitert:
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Haskell, 36 Bytes
Anwendungsbeispiel:
f "aab"
->"aaabb"
. Probieren Sie es online!Wenn die Zeichenfolge mindestens zwei Zeichen enthält, binden Sie sie
a
an das erste Zeichen, an dasb
zweite Zeichen undc
an den Rest der Zeichenfolge. Auf die Ausgabea
folgt,a
wenna
nicht gleich,b
ein rekursiver Aufruf mitb:c
. Wenn es nur ein Zeichen gibt, ist das Ergebnis das Zweifache dieses Zeichens.quelle
CJam, 10 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Ruby, 30 Bytes
quelle
Gelee , 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Batch, 140 Bytes
Übernimmt die Eingabe für STDIN.
quelle
sed,
18-15Bytes (+1 für -r)Originelle Lösung
quelle
R, 36 Bytes
quelle
PowerShell, 50 Byte
Probieren Sie es online!
quelle
Mathematica,
3421 BytesVielen Dank an Martin Ender, der in Mathematica den richtigen Weg gefunden hat, um 13 Byte zu sparen!
Reine Funktion mit einer Reihe von Zeichen als Eingabe- und Ausgabeformat.
Split
trennt eine Liste in gleiche Zeichenfolgen.##&[#,##]&
ist eine Funktion, die eine Folge von Argumenten zurückgibt: das erste Argument, das eingegeben wird, dann alle Argumente (also insbesondere das erste wiederholen); Dies wird@@@
auf jede Unterliste derSplit
Liste angewendet ( ) .quelle
##&[#,##]&@@@Split@#&
? (Ungetestet.)Gather
funktioniert nicht wirklich, wenn es mehrere Läufe desselben Charakters gibt (aber zum GlückSplit
ist das ein Byte kürzer)Split
in meinem Herzen) Wunderbare Konstruktion in Ihrem ersten Kommentar!Java,
15114660 BytesRegex
Detailliert
quelle
Matcher
undPattern
? Sie können es auf 60 Bytes wieString f(String s){return s.replaceAll("((.)\\2*)","$1$2");}
Brainfuck , 38 Bytes
Probieren Sie es online!
quelle
Alice , 12 Bytes
Zwei Bytes wurden dank Martin Ender golfen, noch bevor diese Antwort veröffentlicht wurde. Er ist mächtiger, als Sie sich jemals vorstellen können.
Probieren Sie es online!
Erläuterung
quelle