Biorąc pod uwagę niepusty ciąg małych liter ASCII a-z
, wypisuj ten ciąg z każdym kolejnym „uruchomieniem” tej samej litery, przedłużonym o jeszcze jedną kopię tej litery.
Na przykład dddogg
( 3 d
, 1 o
, 2 g
) zmienia się w ddddooggg
( 4 d
, 2 o
, 3 g
).
To jest golf golfowy : wygrywa najkrótsza odpowiedź w bajtach.
Przypadki testowe
aabbcccc -> aaabbbccccc dzwonek do drzwi -> ddooorrbbeelll uuuuuuuuuz -> uuuuuuuuuuzz q -> qq xyxyxy -> xxyyxxyyxxyy xxxyyy -> xxxxyyyy
Odpowiedzi:
05AB1E , 5 bajtów
Wyjaśnienie:
Wypróbuj online lub jako pakiet testowy .
Enclose jest całkiem nowym wbudowanym; to pierwszy raz, kiedy go użyłem. Bardzo wygodne;)
05AB1E , 4 bajty (niekonkurujące)
.¡
został zastąpiony przezγ
w najnowszej aktualizacji.źródło
dddd
pierwszy element tablicy na stosie w wyjaśnieniu po wykonaniu polecenia „załącz”.Ć
?xx -> xxxx
kiedy powinno byćxx -> xxx
...?Python 3 , 44 bajty
Wypróbuj online!
źródło
Siatkówka , 11 bajtów
Wypróbuj online!
Zastępuje każdy ciąg znaków jednym ze znaków biegu, a następnie sam przebieg.
źródło
Pyth , 7 bajtów
Zestaw testowy .
Jak to działa
źródło
MATL , 5 bajtów
Wypróbuj online!
Wyjaśnienie
Rozważ wejście
'doorbell'
.źródło
Alice , 17 bajtów
Wypróbuj online!
Wyjaśnienie
Jest to struktura dla programów, które działają w całości w trybie porządkowym i są zasadniczo liniowe (można napisać proste pętle, a jedna jest używana w tym programie, ale trudniej jest tu pracować z inaczej rozgałęzionym przepływem sterowania). Wskaźnik instrukcji odbija się po przekątnej w górę i w dół przez kod od lewej do prawej, a następnie zostaje przesunięty o jedną komórkę o dwa lustra na końcu, a następnie przesuwa się z prawej do lewej, wykonując komórki, które pominął przy pierwszej iteracji. Zlinearyzowana forma (ignorowanie kopii lustrzanych) w zasadzie wygląda następująco:
Przejdźmy przez to:
źródło
Galaretka , 6 bajtów
Wypróbuj online!
Działa tylko jako pełny program (tzn. Wyjście łańcuchowe).
źródło
Brachylog , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
~
mieć pierwszeństwo przed metapredykatami (lub zmienić na operację postfiksową); jeśli tak, możesz to zrobić w siedem.C, 49 bajtów
Zobacz, jak działa online .
źródło
Python 2 , 47 bajtów
Wypróbuj online!
źródło
C, 53 bajty
Wypróbuj online!
źródło
PHP, 40 bajtów
Wersja online
PHP <7.1, 44 bajtów
Wersja bez Regex
Wersja online
źródło
Japt , 8 bajtów
7 bajtów kodu, +1 dla
-P
flagi.Przetestuj online!
Wyjaśnienie
Korzysta z
ó
wbudowanego (partycja na falsy), który właśnie dodałem wczoraj:źródło
Sześciokąt , 33 bajty
Rozszerzony:
Wypróbuj online!
Pseudo-kod to mniej więcej:
źródło
JavaScript (ES6),
3330 bajtówSpróbuj
źródło
pieprzenie mózgu , 23 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Perl 6 , 18 bajtów
Spróbuj
Rozszerzony:
źródło
05AB1E , 8 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Haskell, 36 bajtów
Przykład użycia:
f "aab"
->"aaabb"
. Wypróbuj online!Gdy łańcuch ma co najmniej dwa znaki, powiąż
a
z pierwszym znakiem,b
z drugim ic
resztą łańcucha. Po wyjściua
następujea
if, jeślia
nie jest równe,b
a następnie wywołanie rekurencyjne zb:c
. Jeśli jest tylko jeden znak, wynik jest dwa razy większy niż ten znak.źródło
CJam, 10 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Rubinowy, 30 bajtów
źródło
Galaretka , 5 bajtów
Wypróbuj online!
Jak to działa
źródło
Partia, 140 bajtów
Pobiera dane wejściowe na STDIN.
źródło
sed,
1815 bajtów (+1 dla -r)Oryginalne rozwiązanie
źródło
R, 36 bajtów
źródło
PowerShell, 50 bajtów
Wypróbuj online!
źródło
Mathematica,
3421 bajtówPodziękowania dla Martina Endera za znalezienie odpowiedniego sposobu na zrobienie tego w Mathematica, oszczędzając 13 bajtów!
Czysta funkcja wykorzystująca tablicę znaków jako formaty wejściowe i wyjściowe.
Split
dzieli listę na sekwencje równych znaków.##&[#,##]&
jest funkcją, która zwraca sekwencję argumentów: pierwszy argument jest podawany, a następnie wszystkie argumenty (więc w szczególności powtarzanie pierwszego); jest to stosowane (@@@
) do każdej podlistySplit
listy.źródło
##&[#,##]&@@@Split@#&
? (Nietestowane.)Gather
tak naprawdę nie działa, jeśli istnieje wiele przebiegów tej samej postaci (ale na szczęścieSplit
i tak jest bajt krótszy)Split
w sercu) Cudowna konstrukcja w twoim pierwszym komentarzu!Java,
15114660 bajtówRegex
Szczegółowy
źródło
Matcher
iPattern
? MożeszString f(String s){return s.replaceAll("((.)\\2*)","$1$2");}
pieprzenie mózgu , 38 bajtów
Wypróbuj online!
źródło
Alice , 12 bajtów
Dwa bajty zostały rozegrane dzięki Martinowi Enderowi jeszcze przed opublikowaniem tej odpowiedzi. Jest potężniejszy niż można sobie wyobrazić.
Wypróbuj online!
Wyjaśnienie
źródło