Einführung
Street Talk kann sehr schwer zu verstehen sein, insbesondere für Programmierer, von denen nicht bekannt ist, dass sie sehr streetwise sind.
Es ist Ihre Aufgabe, einen Dolmetscher zu erstellen, der uns allen hilft, im städtischen Umfeld zu überleben.
Herausforderung
Erstellen Sie mit einem englischen Satz als Eingabe ein Programm oder eine Funktion, die bestimmt, ob das Ergebnis des Satzes positiv oder negativ ist.
Der Satz enthält 0
zu 2
negativen Worte. Wie jeder Programmierer weiß, führt ein doppeltes Negativ zu einem positiven Ergebnis. Aus diesem Grund muss Ihr Code einen Wert für " truthy / falsey" gemäß der folgenden Regel ausgeben oder zurückgeben :
No negative words -> truthy
One negative word -> falsey
Two negative words -> truthy
Die Liste der negativen Wörter:
no
,not
,none
- Alles was endet in
n't
never
,neither
,nor
nobody
,nothing
,nowhere
Es gibt einen Randfall. Wann immer ein Satz mit beginnt No,
, wird dieses Wort bei der Bestimmung des Ergebnisses nicht als negatives Wort behandelt (es zählt zur Anzahl der negativen Wörter, sodass es nur noch ein Wort geben kann).
Der Satz folgt den grundlegenden Grammatikregeln (Groß- und Kleinschreibung, Zeichensetzung) und enthält nur Wörter, die aus einem Wörterbuch stammen (zum Glück macht dies den Fragentitel nicht ungültig). Der Satz enthält keine Eigennamen (Entschuldigung, Dr. Nein, Sie sind nicht da).
Testfälle
Wahrheit:
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.
Die Ironie hier ist natürlich , dass einige dieser sollte anders interpretiert werden. Aber hey, Sie können dem Lautsprecher nichts vorwerfen, weil er unserer Logik nicht entspricht.
Regeln
Standard Lücken sind verboten. Das ist Code-Golf , also sei kurz und bündig!
been
für einen 100% negativen Satz verlieren !Antworten:
Retina , 63 Bytes
Probieren Sie es online!
Erläuterung
No,
Vom Eingang entfernen . Aufgrund der Großschreibungsregeln kann dies nur am Anfang der Eingabe erscheinen, daher benötigen wir kein explizites^
.Zählen Sie die Anzahl der Übereinstimmungen des Regex ohne Berücksichtigung der Groß- / Kleinschreibung nach dem
`
. Es werden nur alle relevanten Wörter gefunden, bei denen die Alternativen durch gemeinsame Präfixe / Suffixe ersetzt wurden.Zähle
0
oder2
s, also wandeln wir gerade Zählungen in1
und ungerade Zählungen in um0
.quelle
n't
das danach nicht benötigt\b
wird, da die Wörter aus einem Wörterbuch stammen müssen. Auch ich hatte das Gleiche, aber ich hatte das Fleisch der Antwort nicht so knapp, mit ein paar Bytes mehr.Bash,
1151079998979585 BytesVerwendet die Pakete Core Utilities (für
wc
) undgrep
. Angenommen, der Satz wird über die Standardeingabe eingegeben. Die Verlaufserweiterung ist durch deaktiviertset +o histexpand
.Überprüfen Sie das Ergebnis: In Bash steht 0 für true, 1 für false
Wie funktioniert es?
18 Bytes (115 bis 99) gespeichert durch Inspiration von Qwertiy 's Antwort und Martin Ender ' s Antwort . 1 Byte danke an Nahuel Fouilleul .
quelle
noon
und nichtThat'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 Byte speichernJavascript ES6,
898786 ZeichenPrüfung:
quelle
Perl 5 , 74 Bytes
73 Byte Code + 1 für
-p
.Probieren Sie es online!
quelle