Вступление
Когда вам дают скучный текст, вы просто хотите покончить с ним как можно быстрее. Давайте посмотрим на следующий текст:
Ens colligi timenda etc priorem judicem. De quascunque ii at contingere
repugnaret explicetur intellectu. Adjuvetis hoc fortassis suspicari opportune
obversari vix eam? Dei praemia prudens hominum iii constet requiri haberem. Ima
sane nemo modi fuit lus pro dem haud. Vestro age negare tactum hoc cui lor. Ne et
ut quod id soli soni deus. At constare innumera is occurret ea. Nia calebat seu
acquiro fraudem effingo dicimus.
Примечание. В этом тексте есть новые строки для удобства чтения, в то время как в тестовых примерах, которые вам нужно обработать, нет символов новой строки.
Один из способов просмотра текста - найти вопросы, которые автор вставил в текст. Например, есть 1 вопрос в тексте выше. А именно:
Adjuvetis hoc fortassis suspicari opportune obversari vix eam?
Это можно сделать, разбив текст на предложения. Предложение всегда заканчивается одним из следующих символов пунктуации: .?!
(другие не должны обрабатываться). Другие символы, кроме этих, являются частью предложения.
Задание
Задана строка текста, состоящая только из
- буквы (а-я-я)
- цифры (0-9)
- пространства
- пунктуация (
,.;:?!
) (предложение не может начинаться с одного из них).
Выведите вопросы, которые есть в тексте, в любом разумном формате. Вы можете предположить, что в тексте всегда будет хотя бы 1 вопрос . Выведение завершающую и ведущие пробелы до и после того, как вопрос разрешен.
Важно : Рядом с символом пунктуации никогда не будет другого символа пунктуации (например, ??
он недействителен и не должен обрабатываться).
Контрольные примеры
В формате:
Input
Output(s)
Тестовые случаи:
Huh? I haven't heard what you just said. Could you repeat that please?
Huh?
Could you repeat that please?
plz can i haz cheesburgr? i am cat pls.
plz can i haz cheesburgr?
This is a badly formatted question.Can u please help me,or my friends,with formatting this question ?thankyou.
Can u please help me,or my friends,with formatting this question ?
a.b.c.d?
d?
Does this question have a question mark? yes
Does this question have a question mark?
Why example.com resolves to 127.0.0.1 in 99.9 percent of cases?
9 percent of cases?
A? b? c? d!
A?
b?
c?
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
.?!
Другие не должны обрабатываться, как указано в ваших правилах, но вы сказали, что другие не должны обрабатываться.Ответы:
Retina,
1311 байтПопробуйте онлайн!
Спасибо @MartinEnder за 2 байта!
источник
Python, 46 байт
Звоните с:
вывод на тесты:
другая идея, 77 байт (в python3 вам понадобится список вокруг фильтра):
Я новичок в этом, так что это, так что это может быть гораздо короче.
-17 (!) Байтов благодаря Мартину
-2 байта путем сопоставления чего-либо, кроме "!", "?" или "." (Приближаясь к решениям оболочки, но я сомневаюсь, что смогу сэкономить гораздо больше)
источник
[\w,:; ]*
взгляд за спиной, и вам также не нужно делать несносных (потому что эта группа в любом случае не может пройти мимо знака препинания), и тогда вам также не нужно предвкушать.
свой вклад. Вы также сокращаете оставшийся класс персонажа до[^.!?]
.JavaScript,
3524 байтаВозвращает все подстроки, которые начинаются после a
.
,?
или или!
(или начала текста) и заканчиваются на a?
.источник
V , 12 байт
Попробуйте онлайн!
Очень простой ответ.
К счастью, обработка новых строк или проверка всех тестовых случаев не добавляет байтов.
источник
Желе , 16 байт
Попробуйте онлайн! или проверьте все тесты
источник
Shell утилиты,
4338 байтСпасибо rexkogitans за обрезку 5 байтов!
Трубный ввод, вот так:
Если что имеет значение, я использую:
tr
5.3.0sed
4.2.1cmd.exe
, поставляется с Windows 5.1.2600источник
tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"
сохраняет 5 байт (два добавленоtr
и 7 сохраненоsed
- это было проверено в bash)./g
не требуется, так как обрабатывается построчно.[]
; моя первая попытка сделать это выглядела примерно так\(\.|!\)
.Perl 5.10,
2118 байт (с флагом -n )Простая реализация вопроса.
Попробуй это здесь!
источник
m
вашего регулярного выражения, и тогда вы сможете удалить пространство междуsay
и/
Ruby 1,9, 17 байт
5-байтовая программа, которая должна вызываться со следующими параметрами командной строки:
источник
Пакет, 174 байта
Чтение строки из STDIN на байт короче, чем использование
set s=%*
.источник
PowerShell v4 +, 43 байта
Действительно просто. Принимает ввод
$args
и передает его в качестве первого параметра[regex]::Matches(...)
статической функции .NET . Регулярное выражение, с которым мы сопоставляем,[^?!.]*\?
- это любое количество символов, не заканчивающихся предложением, за которыми следует знак вопроса. Статическая функция возвращает массив объектов, детализирующих, какую группу захвата, индекс и т. Д., Но нам нужны только.Value
s, поэтому возвращаемое значение инкапсулируется в скобках, и мы вызываем это свойство. Здесь вступает в действие требование v4 +, так как в предыдущих версиях вам вместо этого нужно было сделать что-то вроде цикла|%{$_.Value}
или|Select Value
получить соответствующие свойства.Пример без паренов и
.Value
Пример с паренсом и
.Value
источник
Python 3, 91 байт
Сохраняет 1 байт в Python 2:
источник