Вызов
Привет, учитывая строку в качестве входных данных, удалите все приветствия, найденные в начале строки.
Программа, которая выполняет самые правильные замены в менее чем 50 байтах, побеждает.
Приветствия
Эй, приветствие определяется как одно из следующих слов:
- Здравствуй
- Привет
- Привет
- Уважаемые
- Привет
- хаи
- парни
- HII
- здор`ово
- хия
- сено
- хейа
- Голя
- хихи
- приветы
Первая буква может быть заглавной.
После приветствия всегда будет запятая и / или один пробел, который также должен быть удален. Запятая и пробел могут быть в любом порядке ( ,<space>
или <space>,
), и оба должны быть удалены.
Приветствие и следующее слово всегда будут разделяться запятой и / или одним пробелом.
Затем вы должны использовать первую букву слова, которое следовало бы за приветствием. Даже если замена не состоялась, вы все равно должны использовать заглавные буквы в первом слове результата.
Использование заглавных букв относится только к строчным буквам алфавита ( abcdefghijklmnopqrstuvwxyz
). Вы должны оставить любой другой персонаж, как это было.
Приветствие всегда будет в начале строки. Вы не должны заменять приветствие, которого нет в начале.
Там не всегда может быть приветствие.
Ваш код должен быть менее 50 байтов.
Примеры
Input > Output
Salutations, what's going on? > What's going on?
hello i have quetions how does juice an avocado > I have quetions how does juice an avocado
How d'you do > How d'you do
Hey,You! > You!
hola cows eat hay > Cows eat hay
hey Hi there! > Hi there!
hihi ,guys > Guys
Тест батареи
Привет, всего 1000 различных входов:
Тестовую батарею можно найти здесь, где каждый вход разделен новой строкой: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/inputs.txt
Соответствующие правильные результаты находятся здесь: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/replaced.txt
Команда Bash для получения обоих выше
wget https://raw.githubusercontent.com/beta-decay/Remove-Substitutions-Battery/master/{inputs,replaced}.txt
выигрыш
Привет, программа с наиболее правильными заменами из 1000 входов выше выигрывает.
Вы должны поместить процент входных данных, которые ваша программа обрабатывает правильно, в заголовок следующим образом:
# Language Name, percentage%
Я не совсем уверен, почему Джефф сделал это, но, тем не менее, это хороший вызов.
источник
s=>System.Text.RegularExpressions.Regex.Replace();
50 байтов, прежде чем будет задан даже шаблон, это C # тогда. (С подходом регулярных выражений, конечно)Ответы:
GNU sed,
78%100%(49 байт)
Тестовая батарея довольно ограничена: мы можем посчитать, какие слова появляются первыми в каждой строке:
В приветствий быть удалены начинаются с
d
,g
,h
илиs
(или в верхнем регистре его версий); не приветствия, начинающиеся с этих буквИгнорирование строк, где они появляются в одиночку, это 220 ложных срабатываний. Итак, давайте просто удалим начальные слова, начинающиеся с любой из этих четырех букв.
Когда мы видим начальное слово, начинающееся с любого из этих (
/ ^[dghs]\w*
), без учета регистра (/i
) и сопровождаемое хотя бы одним несловарным символом (\W\+
), то его заменяют пустой строкой. Затем замените первый символ его заглавным эквивалентом (s/./\U&/
).Это дает нам
Теперь мы можем немного уточнить это:
Самый большой набор ложноположительных результатов
how
, поэтому мы делаем замену условной, добавляя префикс с отрицательным тестом:Мы также можем фильтровать вторую букву, чтобы исключить
g'd
,speak
иsweet
:Это оставляет только
good
ложное срабатывание. Мы можем настроить префиксный тест, чтобы исключить слова, оканчивающиеся наw
илиd
:демонстрация
источник
Сетчатка ,
68%72,8% (стараяверсия),74,8%77,5% (новая тестовая батарея)Попробуйте онлайн! Изменить: Получил 4,8% (старый) 2,7% (новый) охват с помощью советов @ MartinEnder.
источник
[ ,]+
чтобы выжать еще несколько байтов. Вы также можете извлечьh
из чередования.i`^h(a[iy]|eya?|i(h?i?|ya))[ ,]+
может сработать, означая, что у вас осталось 8 байтовh?i?
ничего не экономит,h?i|
и это будет соответствоватьhih
(хотя я не знаю, есть ли это даже в тестовых случаях).ih?i?|iya
.i`^h(a[iy]|eya?|ih?i|iya|ola|ello)[ ,]+
тогдаPHP, 60,6%
50 байт
Попробуйте онлайн!
PHP, 59,4%
49 байт
Попробуйте онлайн!
PHP, 58,4%
50 байт
Попробуйте онлайн!
источник
#^[gh]\w+.#
Vim,
55,4%44,4%Объяснение:
источник