Фон
Это первая часть 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
)? Числа также не учитываются (т.е. допускаются только буквы алфавита)?Ответы:
Пип,
6054 байтаGitHub хранилище для Pip
Принимает входные данные в качестве аргументов командной строки (что требует ввода кавычек вокруг ввода 1, при условии, что он содержит пробелы). Конечный символ новой строки не печатается (добавьте
x
в конец программы, чтобы добавить один).Несколько неловко, с комментариями:
Образец прогона:
источник
Сетчатка , 88 байт
В целях подсчета каждая строка помещается в отдельный файл,
\n
заменяется реальными символами новой строки и<empty>
представляет собой пустой файл. Для удобства вы можете запустить приведенный выше код из одного файла (где<empty>
есть пустая строка), если вы используете-s
флаг интерпретатора.источник
Javascript ES6,
117141 символовТестовое задание:
источник
Javascript (ES6),
173169Основной поиск и замена регулярных выражений
скрипка
Редактировать: Исправлена ошибка в тестовом примере
magic magic
,ma~gic
источник
f("magic magic", "ma~gic")
возвращается"ma~gic magic"
Perl, 146
Всего лишь первая попытка, многие вещи могут быть сокращены - продолжится завтра!
источник