introduction
Les conversations de rue peuvent être vraiment difficiles à comprendre, en particulier pour les programmeurs, qui ne sont pas connus pour être très streetwise.
C'est votre travail de créer un interprète pour nous aider à survivre en milieu urbain.
Défi
Étant donné une phrase anglaise en entrée, créez un programme ou une fonction qui détermine si le résultat de la phrase est positif ou négatif.
La phrase contiendra 0
de 2
mots négatifs. Comme tout programmeur le sait, un double négatif se traduit par un positif. Par conséquent, votre code doit générer ou renvoyer une valeur truey / falsey selon la règle suivante:
No negative words -> truthy
One negative word -> falsey
Two negative words -> truthy
La liste des mots négatifs:
no
,not
,none
- Tout se terminant par
n't
never
,neither
,nor
nobody
,nothing
,nowhere
Il y a un cas de bord. Chaque fois qu'une phrase commence par No,
, ce mot n'est pas traité comme un mot négatif lors de la détermination du résultat (il compte pour le nombre de mots négatifs, il ne peut donc y en avoir qu'un de plus).
La phrase suivra les règles de grammaire de base (majuscule, ponctuation) et ne contiendra que des mots qui peuvent être trouvés dans un dictionnaire (heureusement, cela n'invalide pas le titre de la question). La phrase ne contiendra aucun nom propre (désolé, Dr Non, vous êtes absent).
Cas de test
Vérité:
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.
L'ironie ici, bien sûr, est que certains d'entre eux doivent être interprétés différemment. Mais bon, vous ne pouvez pas reprocher au haut-parleur de ne pas se conformer à notre logique.
Règles
Les failles standard sont interdites. C'est du code-golf , alors soyez concis!
been
pour une phrase négative à 100%!Réponses:
Rétine , 63 octets
Essayez-le en ligne!
Explication
Supprimer
No,
de l'entrée. En raison des règles de capitalisation, cela ne peut apparaître qu'au début de l'entrée, nous n'avons donc pas besoin d'un explicite^
.Comptez le nombre de correspondances de l'expression régulière insensible à la casse après le
`
. Il correspond juste à tous les mots pertinents, où j'ai extrait les préfixes / suffixes communs avec les alternatives.Nombre
0
ou2
s, nous transformons donc les nombres pairs en1
nombres impairs0
.la source
n't
n'a pas besoin\b
après, car les mots doivent provenir d'un dictionnaire. De plus, j'avais la même chose, mais je n'avais pas la chair de la réponse aussi concise, en utilisant quelques octets de plus.Bash,
1151079998979585 octetsUtilise les packages Core Utilities (for
wc
) etgrep
. Supposons que la phrase soit donnée via l'entrée standard. L'expansion de l'historique est désactivée parset +o histexpand
.Vérifiez le résultat: dans Bash 0 est pour vrai, 1 pour faux
Comment ça marche?
18 octets (115 à 99) sauvés par l' inspiration de Qwertiy 's réponse et Martin Ender ' s réponse . 1 octet merci à Nahuel Fouilleul .
la source
noon
et nonThat'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))
$(..)
sauvegarder 1 octetJavascript ES6,
898786 caractèresTester:
la source
Perl 5 , 74 octets
73 octets code + 1 pour
-p
.Essayez-le en ligne!
la source