вход
Строка печатных символов ASCII, например:
This is an example string.
Выход
Для каждого согласного ( BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz
), за которым не следует гласный ( AEIOUaeiou
), добавьте последний гласный перед ним в нижнем регистре.
Согласные перед первым гласным остаются как есть :
Thisi isi ana examapale seterinigi.
Контрольные примеры
AN EXAMPLE WITH A LOT UPPERCASE (plus some lowercase)
=> ANa EXAMaPaLE WITiHi A LOTo UPuPEReCASE (pelusu some lowerecase)
And here comes a **TEST** case with 10% symbols/numbers(#)!
=> Anada here comese a **TESeTe** case witihi 10% siyimiboloso/numuberese(#)!
This is an example string.
=> Thisi isi ana examapale seterinigi.
abcdefghijklmnopqrstuvwxyz
=> abacadefegehijikiliminopoqorosotuvuwuxuyuzu
A pnm bnn
=> A panama banana
Tell me if you need more test cases!
=> Telele me ifi you neede more tesete casese!
счет
Поскольку это код-гольф , выигрывает ответ с самым низким числом байтов на каждом языке (ответ не будет принят).
A pnm bnn
!Ответы:
Сетчатка , 48 байт
Попробуйте онлайн! Объяснение: Смотритель поиска ищет точку, за которой не следует гласная, в то время как просмотр сзади ищет непосредственно предшествующий согласный и предыдущий гласный, который затем вставляется в нижнем регистре.
источник
JavaScript (ES6),
108105 байт(Сохранено 3 байта благодаря @Shaggy.)
В поисках гласных или согласные без следующих гласных:
(Нам не нужно явно искать согласные, потому что гласные исключаются на основе
/[aeiou]|...
.)В нем хранятся гласные
v
, и в нихv
вставлены согласные без следующих гласных :(Если
r[1]
существует, мы сопоставляем согласный плюс не гласный.)Если ничего не изменилось, мы возвращаем ввод. В противном случае мы рекурсируем на замененную строку.
Показать фрагмент кода
источник
s=>s.replace(/[aeiou][^a-z]*([a-z](?![aeiou]))+/gi,s=>s.replace(/(?!^)./g,a=>a+s[0].toLowerCase()))
кажется, у меня не может быть проблем с последовательностями не-букв(s+=' ')
следует сохранить несколько байтов.Python 2 ,
134119 байтПопробуйте онлайн!
РЕДАКТИРОВАТЬ: 15 байтов THX Линн
источник
<vowels>.count
.Стандартный ML ,
225223 байтаПопробуйте онлайн!
Менее гольф:
Попробуйте онлайн!
источник
it
и использование имени$
переменной.it
тоже, но пока не удосужился сделать это.sed 4.2.2 , 64 байта
Попробуйте онлайн!
источник
Perl 5,
686759 байтВот отличный пример полезности
\K
, и я не могу поверить, что не знал об этой функции до того, как Дом Хастингс указал на нее.Я не смог получить правильное поведение с помощью только использования
s///g
, поэтому реальный цикл кажется необходимым. (Возможно, правильное использование косвенного утверждения могло бы работать без явногоwhile
- но я не нашел его.)источник
[aeiou])
переменной: попробуйте онлайн!JavaScript ES6, 115 байт
Экономит 8 байт благодаря @ETHProductions
Мне удалось надуть это больше в процессе игры в гольф O_o, но это также исправляет ошибку
источник
JavaScript,
8882 байтаСделано с одним регулярным выражением:
Оригинальная версия (88 байт):
Обновленная версия (82 байта) после просмотра регулярного выражения Нила :
источник
Japt
-P
, 28 байтПопробуйте онлайн!
Распаковано и как это работает
ó
Функция побеждает любого рода регулярных выражений.источник
JavaScript (Node.js) ,
146143132127125 байтПопробуйте онлайн!
источник
Perl 6 ,
75 73 7169 байтПопытайся
Попытайся
Попытайся
Попытайся
Expanded:
источник
Python 3 , 125 байт
Попробуйте онлайн!
Python 3.6 позволяет нам (ab) использовать f-строки для повторного использования нашего набора гласных (и для еще четырех сохраненных символов - начала инвертированного класса символов регулярного выражения) дешево (
f
префикс в каждой строке, затем,{v}
при необходимости, вместо'+v+'
вам нужно с конкатенацией, или[^aeiouAEIOU
вы вставите буквально.Регулярное выражение, которое не соответствует ни одному символу, а только позиции, позволяет избежать проблем с неперекрывающимися совпадениями, которые требуются обычным регулярным выражениям, и устраняет необходимость обратной ссылки на любую часть соответствия; все, для чего мы используем объект соответствия, - это получить индекс слайса, который мы используем для поиска предыдущего гласного.
Частично де-гольф, это было бы что-то вроде:
источник
TSQL, 500 байт
Таблица
i
используется для вводаисточник
SWI-Пролог, 593 байта
Используются только встроенные предикаты (без использования регулярных выражений или библиотеки управления списками).
Использование:
источник
Хаскелл ,
142130 байтПопробуйте онлайн!
Начальное
""&
является частичным применением(&)
функции, определенной позже, и расположено так странно, что TIO подсчитывает байты""&
, но не учитывает байты, которые в полной программе потребовались бы для присвоения этого любому именованному значению.Менее гольф:
На самом деле должен быть способ сделать это более кратко с помощью сгиба вместо рекурсии, но я не мог понять это.
источник
f
не появляется в теле: Попробуйте онлайн!v = (
вы можете определитьg
как инфиксный оператор .g _""=""
в последнюю позицию экономит байт:g _ x=x
(два байта, если вы переключитесь на инфикс, как предлагает Лайкони).""&
чтобы сделать его функцией.05AB1E , 34 байта
Попробуйте онлайн!
Я забираю это назад, я могу сбрить только 3 байта от этого уродства ... Я думаю, что я мог бы сбрить логическое значение, но ДОЛЖНО быть 3 случая. 1 для гласных. 1 для согласных. 1 для случая, когда существует цифра / символ.
источник
Powershell, 104 байта
на основе регулярного выражения Нейла .
сохранить как
get-rememebere.ps1
. Скрипт для тестирования:источник
$t
. Соответствующее сообщение мета: codegolf.meta.stackexchange.com/a/8731/78123Красный , 276 байт
Попробуйте онлайн!
Удобочитаемый:
источник
YaBasic , 180 байт
Полная программа, которая принимает вход от STDIN и выводит на STDOUT
Попробуйте онлайн!
источник