Учитывая непустую строку строчных букв ASCII a-z
, выведите эту строку при каждом последовательном «запуске» одной и той же буквы, удлиненной еще на одну копию этой буквы.
Например, dddogg
( 3 d
, 1 o
, 2 g
) превращается в ddddooggg
( 4 d
, 2 o
, 3 g
).
Это код-гольф : выигрывает самый короткий ответ в байтах.
Контрольные примеры
aabbcccc -> aaabbbccccc дверной звонок -> ddooorrbbeelll уууууууууз -> уууууууууузз q -> qq ксиокси -> xxyyxxyyxxyy xxxyyy -> xxxxyyyy
Ответы:
05AB1E , 5 байтов
Объяснение:
Попробуйте онлайн или в качестве набора тестов .
Вложите это довольно новый встроенный; это первый раз, когда я использовал это. Очень удобно ;)
05AB1E , 4 байта (не конкурирующие)
.¡
был замененγ
в последнем обновлении.источник
dddd
первый элемент массива в стеке в объяснении после выполнения «enclose».Ć
?xx -> xxxx
когда это должно бытьxx -> xxx
...?Python 3 , 44 байта
Попробуйте онлайн!
источник
Сетчатка , 11 байт
Попробуйте онлайн!
Заменяет каждый цикл символов одним из символов цикла, за которым следует сам цикл.
источник
Pyth , 7 байт
Тестовый пакет .
Как это работает
источник
MATL , 5 байтов
Попробуйте онлайн!
объяснение
Рассмотрим ввод
'doorbell'
.источник
Алиса , 17 байт
Попробуйте онлайн!
объяснение
Это основа для программ, которые работают полностью в обычном режиме и являются по существу линейными (простые циклы могут быть написаны, и один используется в этой программе, но здесь сложнее работать с другим ветвлением потока управления). Указатель инструкций прыгает по диагонали вверх и вниз по коду слева направо, затем сдвигается на одну ячейку на два зеркала в конце и перемещается назад справа налево, выполняя пропущенные ячейки на первой итерации. Тогда линеаризованная форма (без учета зеркал) в основном выглядит так:
Давайте пройдем через это:
источник
Желе , 6 байт
Попробуйте онлайн!
Работает только как полная программа (т. Е. Строковый вывод).
источник
Брахилог , 8 байт
Попробуйте онлайн!
объяснение
источник
~
приоритет над метапредикатами (или изменить его на постфиксную операцию); если бы вы сделали, вы могли бы сделать это за семь.C, 49 байтов
Посмотрите, как это работает онлайн .
источник
Python 2 , 47 байт
Попробуйте онлайн!
источник
C, 53 байта
Попробуйте онлайн!
источник
PHP, 40 байт
Онлайн версия
PHP <7.1, 44 байта
Версия без регулярных выражений
Онлайн версия
источник
Japt , 8 байт
7 байтов кода, +1 за
-P
флаг.Проверьте это онлайн!
объяснение
Это использует
ó
встроенный (раздел на фальсификации), который я только что добавил вчера:источник
Гексагония , 33 байта
Expanded:
Попробуйте онлайн!
Псевдокод более или менее:
источник
JavaScript (ES6),
3330 байтПопытайся
источник
брейкфук , 23 байта
Попробуйте онлайн!
объяснение
источник
Perl 6 , 18 байт
Попытайся
Expanded:
источник
05AB1E , 8 байтов
Попробуйте онлайн!
Объяснение:
источник
Haskell, 36 байт
Пример использования:
f "aab"
->"aaabb"
. Попробуйте онлайн!Если в строке есть как минимум два
a
символа, привязайте первый символ,b
второй иc
остаток строки. За выходомa
следуетa
if,a
который не равенb
последующему рекурсивному вызову сb:c
. Если есть только один символ, результат будет в два раза больше этого символа.источник
CJam, 10 байтов
Попробуйте онлайн!
Объяснение:
источник
Рубин, 30 байтов
источник
Желе , 5 байт
Попробуйте онлайн!
Как это работает
источник
Пакет, 140 байт
Принимает участие в STDIN.
источник
sed,
1815 байт (+1 для -r)Оригинальное решение
источник
R, 36 байт
источник
PowerShell, 50 байт
Попробуйте онлайн!
источник
Mathematica,
3421 байтСпасибо Мартину Эндеру за то, что он нашел правильный способ сделать это в Mathematica, сэкономив 13 байт!
Чистая функция, использующая массив символов в качестве входных и выходных форматов.
Split
разделяет список на серии одинаковых символов.##&[#,##]&
является функцией, которая возвращает последовательность аргументов: первый аргумент, который подается, затем все аргументы (поэтому повторяется, в частности, первый); это применяется (@@@
) к каждому подспискуSplit
списка.источник
##&[#,##]&@@@Split@#&
? (Не проверено.)Gather
самом деле не работает, если есть несколько прогонов одного и того же персонажа (но, к счастьюSplit
, в любом случае короче байта)Split
в виду в своем сердце) Замечательная конструкция в вашем первом комментарии!Java,
15114660 байтRegex
Детальнее
источник
Matcher
иPattern
? Вы можетеString f(String s){return s.replaceAll("((.)\\2*)","$1$2");}
брейкфак , 38 байт
Попробуйте онлайн!
источник
Алиса , 12 байт
Благодаря Мартину Эндеру было сыграно два байта еще до публикации этого ответа Он могущественнее, чем вы могли себе представить.
Попробуйте онлайн!
объяснение
источник