Введение
Уличные разговоры могут быть действительно трудными для понимания, особенно программистам, которые, как известно, не очень уличны.
Ваша задача - создать переводчика, который поможет нам выжить в городской среде.
Вызов
Учитывая предложение на английском языке, создайте программу или функцию, которая определяет, будет ли результат предложения положительным или отрицательным.
Приговор будет содержать 0
до 2
отрицательных слов. Как знает любой программист, двойной отрицательный результат приводит к положительному. Следовательно, ваш код должен выводить или возвращать значение true / falsey согласно следующему правилу:
No negative words -> truthy
One negative word -> falsey
Two negative words -> truthy
Список негативных слов:
no
,not
,none
- Все, что заканчивается в
n't
never
,neither
,nor
nobody
,nothing
,nowhere
Есть один крайний случай. Всякий раз, когда предложение начинается с No,
, это слово не рассматривается как отрицательное слово при определении результата (оно учитывается в количестве отрицательных слов, поэтому может быть только одно).
Предложение будет следовать основным правилам грамматики (использование заглавных букв, пунктуация) и будет содержать только те слова, которые можно найти в словаре (к счастью, это не делает недействительным заголовок вопроса). Предложение не будет содержать имен собственных (извините, доктор Нет, вы вышли).
Контрольные примеры
Truthy:
Yes.
It's noon.
Hello, World!
What is this?
Ain't no thang!
Never say never.
No, it's noon now.
Neither me nor you.
I didn't do nothing!
No, I am your father.
A non-alcoholic drink.
I can't get no satisfaction.
All your base are belong to us.
Falsey:
No.
No, no!
Not today.
Neither am I.
Don't do that!
That's no moon!
And none survived.
Is this not my car?
No man is an island.
Nosebleeds are no fun.
Nothing compares to you.
That's a no, I'm afraid.
No, I am not your mother.
Ирония здесь, конечно, заключается в том, что некоторые из них следует интерпретировать по-разному. Но эй, ты не можешь обвинить говорящего в том, что он не соответствует нашей логике.
правила
Стандартные лазейки запрещены. Это код-гольф , так что будьте лаконичны!
been
100% отрицательное предложение!Ответы:
Сетчатка , 63 байта
Попробуйте онлайн!
объяснение
Удалить
No,
из ввода. Из-за правил использования заглавных букв, это может появиться только в начале ввода, поэтому нам не нужно явно указывать^
.Подсчитайте количество совпадений регулярного выражения без учета регистра после
`
. Он просто сопоставляет все релевантные слова, где я извлек общие префиксы / суффиксы с альтернативами.Count
0
или2
s, поэтому мы превращаем четные1
и нечетные числа в0
.источник
n't
это не нужно\b
после него, так как слова должны прийти из словаря. Кроме того, у меня было то же самое, но я не имел смысла ответа так кратко, используя еще пару байтов.Баш,
1151079998979585 байтИспользует пакеты Core Utilities (для
wc
) иgrep
. Предположим, что предложение дается через стандартный ввод. Расширение истории отключеноset +o histexpand
.Проверьте результат: в Bash 0 для true, 1 для false
Как это работает?
18 байт (115 до 99) , хранимых вдохновения из Qwertiy «s ответа и Мартин Эндер » s ответа . 1 байт благодаря Науэлю Фуйе .
источник
noon
и нетThat's a no, I'm afraid.
((~$(grep -Pio "(?!^no,)\b(no(|t|r|ne|body|thing|where)|ne(v|ith)er)\b|.*n't\b"|wc -l)%2))
$(..)
сохранения 1 байтаJavascript ES6,
898786 символовТест:
источник
Perl 5 , 74 байта
Код 73 байта + 1 для
-p
.Попробуйте онлайн!
источник