Catatan: Ada beberapa kata kasar dalam pertanyaan ini.
Ada teka-teki implisit yang diajukan dalam sketsa Monty Python klasik ini (Anda juga dapat menyiapkan skripnya secara online).
Berbagai frase digambarkan sebagai 'kayu' atau 'nyaring', dan satu digambarkan sebagai 'PVC'.
Diberikan frasa, jawab dengan tipenya sesuai dengan daftar berikut:
woody
:
gone
sausage
seemly
prodding
vacuum
bound
vole
caribou
intercourse
pert
thighs
botty
erogenous zone
ocelot
wasp
yowling
tinny
:
litter bin
newspaper
antelope
recidivist
tit
simpkins
PVC
:
leap
Aturan
- Jika input milik salah satu dari daftar di atas, output harus
woody
,tinny
atauPVC
sesuai. - Semua input huruf kecil.
- Perilaku apa pun dapat diterima untuk frasa yang tidak tercantum di atas.
- Byte paling sedikit dalam jawaban menang.
code-golf
string
classification
AJFaraday
sumber
sumber
You may choose how to deal (or ignore) with casing in input and output.
Untuk memperjelas, apakah ini berarti kita dapat mengharapkan input berada dalam huruf besar?Jawaban:
Stax ,
3025 byteJalankan dan debug itu
Representasi ascii yang dikomentari adalah ini. Saya tidak menemukan algoritma ini. Ini tanpa malu merobek solusi python Jonathan Allen .
Jalankan yang ini
sumber
can help you
sedikit membingungkan tetapi tidak apa-apa secara logis.Python 2 ,
9973656463 byteCobalah online!
Alternatif juga dengan 63 byte:
sumber
Python 2 , 62 byte
Cobalah online!
Bagaimana?
Pengiriman ini menggunakan fakta bahwa
hash
fungsinya stabil untuk string dalam Python 2. Setiap input yang valid memiliki output yang valid. The brute-memaksa diulang modulo%97%78%28%15%2
kembali1
untuk semua nyaring dan PVC kata-kata dan0
untuk kayu kata-kata. Dengan menambahkan nilai('ea' in n)
itu, kita mendapatkan2
alih-alih1
untuk input 'lompatan'. Ini adalah tabel dari semua nilai:Jenis untuk kembali sekarang diekstraksi dari string
'wtPoiVonCdn yy'
dengan mengambil setiap karakter ketiga, mulai dari indeks yang dihitung.sumber
JavaScript (ES6), Chrome / Edge, 54 byte
Karena perilaku
parseInt()
pada input besar dengan radix 36 tergantung pada implementasi , yang ini tidak bekerja dengan SpiderMonkey (Firefox).Cobalah online!
Bagaimana?
Fungsi hash mengembalikan 3 untuk kata-kata Nyaring, 1 untuk PVC dan 0 , 4 , 5 atau 6 untuk kata-kata Woody. Kata-kata yang ditandai dengan tanda bintang terpotong secara implisit karena ruang dianggap sebagai karakter yang tidak valid oleh parseInt () .
Versi sebelumnya,
5957 byteCobalah online!
Bagaimana?
Di bawah ini adalah langkah-langkah fungsi yang berbeda untuk setiap input. Hasil modulo pertama adalah perkiraan dalam ketepatan angka JS dan secara matematis tidak valid untuk hubungan seksual .
sumber
Retina ,
393836 byteDisimpan 1 byte dengan menggunakan tiga pasang substitusi seperti pada jawaban Adám.
Cobalah online!
Saya mendapat
.p.|is*t
regex dari pegolf regex Peter Norvig .sumber
Java 8,
818067 byteRegex dari @MatrinEnder jawaban Retina .
Cobalah online.
Jawaban asli:
8180 byteCobalah online.
Penjelasan:
Penjelasan tambahan:
woody
kata-kata yang hadir dalam String di atas, juga tidakle
darileap
.woody
kata - kata yang memilikia
huruf ketiga, sehingga digunakan untuk sampaileap
kePVC
jika itu bukantinny
kata.woody
daftar.sumber
Haskell , 61 byte
Cobalah online!
Gunakan logika yang ditemukan sendiri ini:
i
atau huruf pertamar
,a
ataun
yangtinny
l
(leap
) adalahPVC
woody
Lynn menyimpan satu byte dengan memeriksa
leap
huruf pertama.sumber
"leap"
dengan|a=='l'="PVC"
.QuadS ,
3432 byteTanpa malu-malu menggunakan sistem Martin Ender , termasuk regex dari pegolf regex Peter Norvig .
Cobalah online!
⊃⍵
pilih kejadian pertamaea
"ea".p.|is?t
"p" dikelilingi oleh huruf ATAU "i" dan "t" dengan "s" opsional di antaranya$
akhir input... tetapi mengganti yang cocok dengan yang sesuai dari yang berikut ini:
PVC
tinny
woody
Setara dengan 43 byte Dyalog APL setara adalah:
Coba semua kasing online!
sumber
C (gcc) , 81 byte
Cobalah online!
Urutan pertama bisnis adalah menemukan beberapa fungsi hash yang akan memisahkan kata ke dalam kategori mereka. Setelah beberapa mengutak-atik saya tersandung
(s[0] ^ (s[1] << 2)) & 0x7f
, di mana 0x7f tentu saja ada untuk membawanya ke tingkat ASCII yang dapat dicetak. Ini menghasilkan informasi berikut (tabel diurutkan, tetapi bukan string yang dihasilkan):Tabrakan hash tidak masalah, karena mereka terikat pada kategori yang sama. Kita hanya perlu memeriksa apakah hash yang dihasilkan ada di string hash Tinny ("HzYfPW"), karena hash Woody semua di bawah hash PVC (120). Jika 120 atau lebih tinggi, dan bukan kata Nyaring, itu harus PVC. Jika bukan kata Tinny, dan hash di bawah 120, maka itu harus menjadi kata yang bagus, seperti kayu.
sumber
x86 kode mesin 32-bit, 39 byte
Hexdump:
Fungsi hash adalah perkalian dengan angka "ajaib"
0x2c616f47
. Hanya ada 6 angka yang dapat digunakan dengan kode ini.Pertama-tama, ia menulis
PVC
ke output. Ini akan ditimpa, jika perlu.Setelah hashing, ia memeriksa kata PVC; ceknya
al = ah
- saya memilihnya karena ini adalah instruksi 2 byte kecil. Kemudian, ia menulis salah satuwood
atautinn
, tergantung pada tanda hasil hash. Lalu, ia menulisy
.Kode perakitan:
sumber
Jelly ,
2726 byteTautan monadik yang menerima dan mengembalikan daftar karakter.
Cobalah online!
Bagaimana?
sumber
Haskell , 75 byte
-2 byte terima kasih kepada Laikoni.
Cobalah online!
RIP
enklact
.sumber
f"leap"="PVC";f s|
lebih pendek darif s|s=="leap"="PVC"|
.Kotor ,
735754 byteCobalah online!
Dijelaskan:
Untuk versi lama yang serupa (saya akan memperbaruinya ketika saya berhenti bermain golf)
Tubuh ini terdiri dari:
Jika kita berakhir ke kiri, maka kita memiliki:
Jika tidak, ini akan memeriksa apakah string dimulai dengan "nar":
Kami kemudian memeriksa apakah huruf kedua adalah "i":
Jika mereka semua jatuh, kita bertemu
Jika kita akhirnya melompat, kita membungkus
sumber
C # 97 Bytes
Saya pergi mencari pola di panjang string dan menemukan mereka unik kecuali untuk panjang 4 dan 8. Jadi saya khusus huruf mereka dengan melihat karakter pertama. Oh well, masih lebih pendek dari beberapa jawaban. :)
sumber
string t(string w)=>
bisa adilw=>
. Anda dapat mengkonversi'p'
dan karakter lain ke representasi int mereka, saya pikir. Anda dapat menghapus trailing semi colonPython , 59 byte
Cobalah online!
Menggunakan pengindeksan dari jawaban Python ovs tetapi fungsi pilihan yang lebih sederhana dan lebih pendek:
Jika huruf kesepuluh dari kata,,
w
dengan pembungkus ((w*4)[9]
- di manaw*4
pengulanganw
empat kali) adalah huruf dalam kata tin (in"tin"
) maka kata tersebut nyaring , sebaliknya jika huruf ketiga (w[2]
) adalah a (<'b'
) maka kata itu adalah PVC kalau tidak, kata itu berkayu .... 59 ini melakukan pekerjaan yang sama:
sumber
C, 107 byte
Cobalah online!
sumber
Batch, 145 byte
Mengambil input pada STDIN. Penjelasan: Setelah memeriksa
leap
, kata-kata nyaring baik dimulai dengan salah satu hurufa
,n
ataur
atau huruf kedua adalahi
.sumber
CJam , 35 byte
Cobalah online!
Saya benar-benar lupa bahwa saya telah memulai pencarian kasar untuk ekspresi pendek untuk memotong string kayu dan nyaring menjadi dua kelas. Saya baru saja menemukan jendela konsol tempat pencarian berjalan dan ternyata itu benar-benar menemukan sesuatu ...
Penjelasan
sumber
Excel, 81 byte
Menggunakan metode 'anetisilire'.
sumber
Japt ,
3634 byteMenggunakan RegEx dari solusi Retina Martin.
Cobalah | Periksa semua test case
sumber
JavaScript,
60, 50EDIT Saya melihat semua jawaban regex lainnya. Saya kira saya hanya buta. Lagi pula, ini dia yang menggunakan regex yang sama
Juga, sekarang, ini mengalahkan jawaban JS lainnya
Potongan:
Jawaban lama
Saya belum melihat dengan regex, jadi saya pikir saya akan mencobanya
Tidak yakin apakah ini dianggap 60 atau lebih karena saya tidak menyertakan pernyataan pengembalian. Akan menambahkan potongan ketika saya masuk ke komputer saya
Edit: Cuplikan
sumber