Оригинал: https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html
Ален Кольмерауэр разработал язык логического программирования Prolog. Его целью было создать такой же интеллектуальный язык программирования, как у двухлетнего ребенка. Чтобы доказать, что он достиг своей цели, он представил программу Prolog, которая на все вопросы ответит «Нет».
Спрашивай о чем угодно!
? -(Конечно, он этого не сделал.) Ваша задача - создать программу, которая будет более умной, чем программа Алена Кольмерауэра. Это не должно быть в Прологе.
конкретика
Если ввод заканчивается
?
и имеет хотя бы один,
, вернуть текст от последнего,
до последнего?
.Иначе, если ввод заканчивается
?
возвратомNo
.Остальное, вернись
Yes
.
правила
- Нет стандартных лазеек.
- Ввод / вывод будет осуществляться через наши стандартные методы ввода / вывода.
- Ваша программа должна принять как минимум 1 запрос.
- Вы должны вывести обработанный запрос.
- В
Yes
иNo
«ы чувствительны к регистру в примерах. - Вам гарантировано, что если вход включает в себя
?
, вход будет иметь только один,?
и он всегда будет последним символом. - На входе всегда будет фраза / предложение. Эта фраза / предложение никогда не будет содержать только символы
,
и?
, например,
,?
и,?
не являются допустимыми входами. (Хотя представления могут реализовать это в любом случае, поскольку фраза / предложение в этих случаях является пустой строкой.) - Кроме того, ввод никогда не закончится
,?
. - Если есть пробелы сразу после последнего
,
или непосредственно перед?
, они должны быть включены в вывод.
Примеры
Hmm. -> Yes
Alright, -> Yes
Ask me anything! -> Yes
Ask me a question, please! -> Yes
Are you okay? -> No
No? -> No
Hey,does this program work? -> does this program work
Quotes in the following test cases should not be outputted.
They are used as a delimiter here.
Okay, so this does work ? -> " so this does work "
Please, add, a, test, case, containing, multiple, commas? -> " commas"
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
?
, будет только один, и он всегда будет последним символом?You are guaranteed that if the input includes a ?, the input will only have one ? and it will always be the last character.
Поэтому эти контрольные примеры не являются обязательными.ends with ,?
действительным вход?Ответы:
05AB1E ,
2019 байтов-1 байт благодаря @Grimy .
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как использовать словарь? ), Чтобы понять, почему
”€–”
есть"Not"
и”…Ü
есть"Yes"
.источник
Python 3 , 62 байта
Попробуйте онлайн!
Выражение
~(','in s)*('?'in s)
вычисляется как0
(т.е.'Yes'
), если строка не содержит a'?'
, иначе-1
(т.е.'No'
), если строка не содержит a','
, и иначе-2
(т. Е. Последний разделенный запятыми раздел строки, исключая последний символ).источник
JavaScript (ES6),
5352 байтаПопробуйте онлайн!
комментарии
источник
Древесный уголь ,
2322 байтаПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать: 1 байт сохранен благодаря @KevinCruijssen. Объяснение:
Строка содержит какие-либо
?
s?Содержит ли он какие-либо
,
s?Разбейте строку на
,
s и возьмите последнюю.Удалите
?
и выведите результат.Если нет
,
s, то выведитеNo
.Если нет
?
s, то выведитеYes
.источник
Print(Join(Split(Pop(Split(q, ",")), "?"), w)
наPrint(Minus(Pop(Split(q, ",")), "?");
Minus
сделал это. Кроме того, я был доволен собой за то, что сохранил два сепаратора.Perl 5+
-plF/,|\?/
, 25 байтПопробуйте онлайн!
источник
Pyth , 25 байт
Попробуйте онлайн!
источник
Zsh , 51 байт
Попробуйте онлайн!
Байт может быть сохранен, если
ends with,?
и подобные недействительны.источник
Stax , 16 байт
Запустите и отладьте его
источник
Сетчатка ,
3228 байт-4 байта с подсказками от @Neil .
Попробуйте онлайн.
Объяснение:
источник
K
сцена Retina 1 имеет встроенный условный? Я не Это может сэкономить вам несколько байтов.K
и условно&
быть полностью честным. Я знаю, как использоватьK
с регулярным выражением для сопоставления, как это , но как мне объединить его с условным, чтобы имитировать троичный if-else дляYes
/No
?&
, что меня удивило, и вы можете просто сопоставить строку, или, что еще лучше, символ, поскольку вы знаете, что любой?
должен быть в конце.IBM / Lotus Notes Formula, 79 байтов
Нет TIO для Формулы, так что ...
источник
Python 3 ,
9887 байт-9 байт благодаря ElPedro
Попробуйте онлайн!
Это было побито другими ответами, но я пробую играть в гольф на Python немного больше. Совет ценится!
источник
if
заявления в индексации списка вместо , а затем сократить условия для использованияin
, а затем выбросить все это , потому что это слишком близко к существующий ответif x.count(",")
наif~x.find(",")
, сохранив один байт.str.find
оценивает,-1
если строка не найдена. Если вы дополните это унарным оператором, это приведет к тому,0
если и только если подстрока отсутствует. Кроме того, вы можете заменить егоif","in x
на 4 байта меньше.PHP , 58 байт
Попробуйте онлайн!
источник
Красный , 78 байт
Попробуйте онлайн!
источник
Perl 6 , 40 байт
Попробуйте онлайн!
источник
Гема , 34 персонажа
Образец прогона:
Попробуйте онлайн! / Попробуйте все тестовые примеры онлайн!
источник
Japt , 23 байта
Попробуй
источник
C # (интерактивный компилятор Visual C #) , 72 байта
Сохранено 2 байта благодаря @someone
Попробуйте онлайн!
источник
SkipLast(1) -> Trim('?')
за -??? насколько я вижу (все мои попытки вычислить разницу приводят к разным числам)Python 2 ,
666362 байтаПопробуйте онлайн!
-3 после обнаружения обновленного уточнения «у ввода будет только один? И он всегда будет последним символом».
-1 благодаря @ChasBrown
В основном порт моего ответа Lotus Notes . Любопытно, что указанное выше пояснение не помогает ответу Примечания, потому что
@Ends
это на 4 байта дешевле, чем@Contains
. Теперь, если бы только была@In
функция ...источник
rfind
.Желе , 20 байт
Попробуйте онлайн!
источник
C ++ (gcc) ,
120118 байтФункциональный макрос:
Попробуйте онлайн!
-2 байта благодаря @ceilingcat
источник