pengantar
Jalanan bicara bisa sangat sulit untuk dipahami, terutama untuk programmer, yang tidak dikenal sangat jalanan.
Adalah tugas Anda untuk menciptakan seorang juru bahasa untuk membantu kita semua bertahan di lingkungan perkotaan.
Tantangan
Diberikan kalimat bahasa Inggris sebagai input, buat program atau fungsi yang menentukan apakah hasil dari kalimat itu positif atau negatif.
Kalimat itu akan berisi 0
untuk 2
kata-kata negatif. Seperti yang diketahui oleh setiap programmer, hasil negatif ganda menjadi positif. Oleh karena itu, kode Anda harus menampilkan atau mengembalikan nilai kebenaran / kesalahan menurut aturan berikut:
No negative words -> truthy
One negative word -> falsey
Two negative words -> truthy
Daftar kata-kata negatif:
no
,not
,none
- Apa pun yang berakhir dengan
n't
never
,neither
,nor
nobody
,nothing
,nowhere
Ada satu ujung case. Setiap kali kalimat dimulai No,
, kata itu tidak diperlakukan sebagai kata negatif ketika menentukan hasil (itu dihitung terhadap jumlah kata negatif sehingga hanya ada satu lagi).
Kalimat tersebut akan mengikuti aturan tata bahasa dasar (huruf besar, tanda baca) dan hanya akan berisi kata-kata yang dapat ditemukan dari kamus (untungnya, ini tidak membatalkan judul pertanyaan). Kalimat itu tidak akan mengandung kata benda yang tepat (maaf, Dr. Tidak, Anda keluar).
Uji kasus
Benar:
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.
Ironi di sini, tentu saja, adalah bahwa beberapa di antaranya harus ditafsirkan secara berbeda. Tapi hei, Anda tidak bisa menyalahkan pembicara karena tidak sesuai dengan logika kami.
been
untuk kalimat negatif 100%!Jawaban:
Retina , 63 byte
Cobalah online!
Penjelasan
Hapus
No,
dari input. Karena aturan kapitalisasi, ini hanya dapat muncul di awal input, jadi kami tidak perlu eksplisit^
.Hitung jumlah kecocokan dari regex case-insensitive setelah
`
. Itu hanya cocok dengan semua kata yang relevan, di mana saya telah mengekstrak awalan / sufiks umum dengan alternatifnya.Hitung
0
atau2
s, jadi kami mengubah hitung genap menjadi1
dan menghitung ganjil0
.sumber
n't
tidak perlu\b
setelah itu, karena kata-kata harus berasal dari kamus. Juga, saya memiliki hal yang sama, tetapi saya tidak memiliki daging jawabannya secara ringkas, menggunakan beberapa byte lagi.Bash,
1151079998979585 byteMenggunakan paket - paket Utilitas Inti (untuk
wc
) dangrep
. Asumsikan kalimat diberikan melalui Input Standar. Perluasan riwayat dinonaktifkan olehset +o histexpand
.Periksa hasilnya: Dalam Bash 0 adalah benar, 1 adalah untuk salah
Bagaimana cara kerjanya?
18 byte (115-99) diselamatkan oleh inspirasi dari Qwertiy 'jawaban s dan Martin Ender ' jawaban s . 1 byte terima kasih kepada Nahuel Fouilleul .
sumber
noon
dan tidakThat'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))
$(..)
menghemat 1 byteJavascript ES6,
898786 karakterUji:
sumber
Perl 5 , 74 byte
73 byte kode +1 untuk
-p
.Cobalah online!
sumber