Фон
Это первая часть 3-луночного гольф-поля по обработке текста. Общая идея заключается в том, что если вы возьмете вводимый текст и передадите его через решения для всех трех задач (с небольшим количеством склеивающего кода), он будет выплывать в красиво отформатированном абзаце. В этом первом задании ваша задача - дефис фрагмента текста с использованием заданных шаблонов переноса.
вход
Ваша программа должна принимать два строковых ввода: фрагмент текста и список шаблонов переноса. Первый ввод - просто непустая строка печатных символов ASCII и пробелов; он не будет содержать разрывы строк или тильды ~
. Второй ввод - это список слов, разделенных запятыми, который состоит из слогов, разделенных тильдой, из строчных символов ASCII. Пример есть ex~cel~lent,pro~gram~ming,abil~i~ties
.
Выход
Ваша программа должна изменить первый вход следующим образом. Любое слово (максимальная подстрока буквенных символов ASCII), чья версия в нижнем регистре через дефис находится во втором вводе, должно быть заменено этой версией из дефиса, но его регистр должен быть сохранен. В приведенном выше списке примеров, если текст содержит слово Excellent
, оно должно быть заменено на Ex~cel~lent
; однако, неExcellently
должны быть изменены. Ваш вывод должен быть этой измененной строкой.
Подробные правила и оценка
Вы можете предположить следующее о входных данных:
- Первый вход не содержит тильды, а также ни начальных, ни конечных, ни повторяющихся пробелов. Это не пусто.
- Второй вход содержит как минимум одно слово, а каждое слово содержит как минимум два слога. Каждый слог не пуст.
- Второй вход не содержит слово, которое встречается как слог в другом слове.
При желании вы можете изменить порядок двух входов и, при желании, добавить один завершающий символ новой строки в выход.
Вы можете написать функцию или полную программу. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Тестовые случаи
Они перечислены в формате 1st input [newline] 2nd input [newline] output
.
Excellent programming abilities, you work excellently!
ex~cel~lent,pro~gram~ming,abil~i~ties
Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently!
Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong.
su~per,some~times,in~cor~rectly,spell~ing
Superman (some~times in~cor~rectly spelled "Su~per-man") is su~per #&%@ing strong.
IncONsISTent caPItalizATIon!
in~con~sis~tent,cap~i~tal~iza~tion
In~cON~sIS~Tent caP~I~tal~izA~TIon!
Such short words.
awk~ward
Such short words.
Digits123 are456cool789.
dig~its,dig~i~tal,are~cool
Dig~its123 are456cool789.
magic magic
ma~gic
ma~gic ma~gic
Любая возможная ошибка переноса в этой задаче связана с этим инструментом переноса .
#programming!
все равно будет влиять второй ввод pro~gram~ming
)? Числа также не учитываются (т.е. допускаются только буквы алфавита)?