Apakah ini sebuah kata?

54

Anda harus menulis program atau fungsi yang menggunakan string 4-karakter sebagai input dan menghasilkan nilai yang menunjukkan apakah string tersebut merupakan kata bahasa Inggris atau bukan. Anda diizinkan untuk membuat kesalahan dalam 15% dari testcases yang disediakan.

Detail input:

Input adalah string 4-karakter yang hanya berisi huruf kecil bahasa Inggris (az).

Rincian keluaran:

Jika input adalah kata bahasa Inggris Anda harus mengeluarkan boolean trueatau integer 1.

Jika input bukan kata bahasa Inggris, Anda harus mengeluarkan boolean falseatau integer 0.

Daftar kata

daftar 4 kata kata bahasa Inggris (2236 kata)

daftar 4-string non-kata (2236 string)

Daftar non-kata berisi urutan huruf yang dihasilkan secara acak secara acak dengan kata-kata yang sebenarnya dihapus darinya.

Pengujian

Program atau fungsi Anda seharusnya membuat tidak lebih dari 15% kesalahan pada daftar kata yang diberikan bersama-sama. Itu berarti Anda dapat memberikan output yang salah untuk 670 dari 4472 input yang disediakan.

Anda juga harus memposting program atau fungsi pengujian sehingga orang lain dapat memeriksa jawaban Anda. Durasi program pengujian Anda tidak termasuk dalam skor pengiriman Anda.

Celah standar tidak diijinkan.

Program Anda tidak boleh menggunakan sumber eksternal apa pun, misalnya mengakses web atau membaca dari file.

Ini adalah kode-golf sehingga program atau fungsi terpendek menang.

randomra
sumber
4
Array itu harus menjadi bagian dari kode. (Saya kira). @randomra - hati-hati menyebutkan bahwa Anda tidak dapat membaca / mengakses daftar kata dari mana saja ..
Pengoptimal
3
@BryanDevaney Anda seharusnya hanya kode keras 85% dari daftar
dwana
1
@TeunPronk Ya.
randomra
2
@Sparr Masih ada cara lain untuk melakukan masalah, seperti dalam pertanyaan ini
Sp3000
5
"Apakah ini sebuah kata?" Iya. [<- 4 karakter]
chucksmash

Jawaban:

62

Ruby, 29 byte

->s{!s[/[^aeiou]{3}|[jqxz]/]}

Mudah-mudahan saya sudah benar - ini pemrograman pertama saya di Ruby. Sebenarnya saya melakukan semua pengujian dengan Python, tetapi import reterlalu lama bagi saya.

Ini adalah fungsi anonim yang mengambil string dan output yang true/falsesesuai. Menggunakan regex yang mencari salah satu dari dua hal berikut:

  • Tiga konsonan berturut-turut
  • Berisi salah satu jqxz

Jika salah satu dari ini ada, kami mengklasifikasikan input sebagai bukan kata.

Fungsi ini cocok dengan 2030 kata (salah gagal pada 206) dan gagal pada 1782 tanpa kata (salah mencocokkan 454), dengan total 660 kesalahan klasifikasi. Diuji pada ideone .

Terima kasih kepada @ MartinBüttner untuk bantuan Ruby. Martin juga menunjukkan bahwa suatu program penuh membutuhkan jumlah byte yang sama:

p !gets[/[^aeiou]{3}|[jqxz]/]

Juga terima kasih kepada user20150203 untuk menyederhanakan regex.


Ruby, 1586 1488 1349 1288 1203 byte

Untuk bonus, inilah fungsi dengan regex yang jauh lebih lama:

->s{!s[/[^aeiouyhs]{3}|[^aeiouy]{4}|q[^u]|^x|^[bdf][^aeioulry]|^[cgkprtwy][mfdsbktjgxpc]|^a[aoz]|^e[hf]|^i[ea]|^o[ecy]|^u[^ltnspgr]|[bdgktyz][cgmpw]$|[fhpvx][^aieoflnrsty]$|eh$|i[iyh]|[wkybp]z|[dghz]t|[fjzsv]y.|h[ns].|ae.|y.?[yifj]|[ejo]..[iuw]|[inv]..[gpuvz]|[eu].[jqwx]|[vyz][^t][fhmpqy]|i[^ae][fjqrv]|[ospen].?j|[ceg][iuy][ghkoux]|[bcpx]f|[hnuy]w|[ghnw]b|[txz]n|[jk]r|.[fjuyz]u|[hnt]ia|lsy|.p.o|.l.l|.tas|zal|f.p|eeb|wei|.sc.|.pl|yat|hov|hab|aug|v.re|aba|ohu|ned|s.dd|uc$|nux|oo$|dgo|lix|wua|v.o|vo$|ryo|wue|dk|oic|yol|.tr|yrb|oba|ruh|c.ls|idd|chn|doy|ekh|tk|lke|asl|cir|eez|asc|uil|iou|m..p|awt|irp|zaa|td|swk|ors|phe|aro|yps|q.e|ati|ibt|e.mo|we.y|p.de|ley|eq|tui|e..g|sps|akh|dny|swr|iul|.t.t|.tao|rcy|.p.y|idi|j.o|.kl|oms|ogi|jat|.lis|mye|uza|rsi|.ala|ibo|ipi|yaa|eun|ruy|wog|mm$|oex|koi|uyn|.hid|osc|ofe|w.op|auc|uzy|yme|aab|slm|oza|.fi|bys|z.e|nse|faf|l.h|f.va|nay|hag|opo|lal|seck|z.b|kt|agl|epo|roch|ix.|pys|oez|h.zi|nan|jor|c.ey|dui|ry.d|.sn|sek|w.no|iaz|ieb|irb|tz.|ilz|oib|cd|bye|ded|f.b|if$|mig|kue|ki.w|yew|dab|kh.|grs|no.t|cs.|.n.m|iea|y.na|vev|eag|el[uz]|eo[dkr]|e[hlsu]e|e[dho]l|eov|e[adp]y|r[grt]u|yn[klo]|.[^ilv].v|s[bdgqrz]|m[dfghrz]|[vpcwx]{2}|^[hjlmnvz][^aeiouy]|^[drw]l|l[hnr]/]}

Saya ingin menunjukkan bahwa regex masih bisa mengalahkan kompresi, jadi yang satu ini mengklasifikasikan setiap case dengan benar . Regex itu sendiri agak mirip peluruhan eksponensial - bit pertama cocok dengan banyak kata-kata, kemudian setiap bit setelah pertandingan semakin sedikit dan semakin sedikit sampai saya menyerah dan hanya menyatukan sisanya (sekitar 200 atau lebih) pada akhirnya. Beberapa yang tersisa tampak mengejutkan seperti kata-kata nyata (seperti chiayang merupakan kata).

Saya melemparkan regex ke pembersih golf regex saya yang saya tulis untuk tantangan lain - golf sekitar 300 byte sebelum saya harus mencoba mengacak-acak barang secara manual. Masih ada sedikit yang adil untuk bermain golf.

Sp3000
sumber
1
user20150203 (tidak memiliki rep untuk berkomentar) menyarankan yang berikut ini dalam edit yang saya tolak berdasarkan diskusi ini : "Edit oleh pengguna baru tanpa reputasi: ->s{!s[/[^aeiou]{3}|[jqxz]/]}hanya memiliki 29 byte dan cocok dengan 2030 kata (salah gagal pada 206) dan gagal pada 1782 non -words (salah mencocokkan 454), dengan total 660 kesalahan klasifikasi. "
Martin Ender
Aneh, saya pikir saya akan mencoba menghapus masing-masing char - pasti lupa v. Terima kasih user20150203!
Sp3000
@ Sp3000 Apakah Anda memberi saya otorisasi untuk menggunakan regex Anda dalam jawaban untuk saya? Saya akan memuji Anda dengan reputasi (jika memungkinkan) dan semua kredit akan ditunjukkan dalam jawabannya.
Ismael Miguel
@IsmaelMiguel Apakah ini hanya bahasa yang jauh lebih singkat untuk menulis fungsi untuk pertandingan regex? Kalau begitu saya akui saya agak penasaran ... (jadi saya bisa mencurinya untuk waktu berikutnya!)
Sp3000
@ Sp3000 Tidak lebih pendek. Tapi saya hanya ingin memposting sesuatu. Sudah lama sejak saya memposting sesuatu di sini. Dan itu akan sedikit memperluas pengetahuan saya. Jadi, ini situasi yang saling menguntungkan bagi saya. Dan saya akan memberi Anda beberapa reputasi, jika mungkin, jadi, ini juga merupakan kemenangan bagi Anda (mungkin).
Ismael Miguel
13

Groovy, 77 74

x={it==~/^(?!.+[jq]|[^aeiou][^aeiouhlr]|.[^aeiouy]{3}|.[x-z])|^s[cknptw]/}

Saya menulis program pengujian di Jawa, yang dapat Anda temukan di Gist on Github ini. Ini adalah output dari program pengujian saya:

Good: 2135 1708
Bad: 101 528

(Gagal 629 kasus uji)

PS Saya pikir ini akan segera berakhir masalah golf regex ...

Jika jawaban Sp3000 (fungsi) akan dikonversi ke Groovy, maka akan berakhir dengan jumlah karakter yang sama. Seperti fungsi bernama:

x={it!=~/[^aeiou]{3}|[jqxz]/}

atau fungsi yang tidak disebutkan namanya:

{i->i!=~/[^aeiou]{3}|[jqxz]/}
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
sumber
itu hanya bisa gagal 335 kasus;) tetapi masih cukup rapi meskipun
Teun Pronk
ini terasa sangat salah, namun berhasil ^^
dwana
@TeunPronk: (2236 + 2236) * 0.15 = 670.8. jadi Anda bisa gagal 670. Saya pikir Anda sudah lupa tentang mengklasifikasikan non-kata dengan benar. "Program atau fungsi Anda seharusnya membuat tidak lebih dari 15% kesalahan pada daftar kata yang diberikan bersama-sama ." (penekanan milikku)
Neil Slater
@NeilSlater Aah, Yup, saya hanya menganggap yang benar. Buruk saya ^^
Teun Pronk
9

Javascript, 1626 byte:

Saya ingin mencari solusi yang untuk setiap karakter memiliki petunjuk yang mungkin akan muncul setelahnya. Tidak sesingkat itu, tetapi tidak ada regex dan hasil yang cukup baik (kata-kata: 101 kesalahan, non-kata, 228 kesalahan)

v=function(w){var g={a:{b:3,c:4,d:4,m:6,f:1,r:14,g:4,i:6,x:2,k:2,l:10,n:12,s:6,p:4,t:7,u:2,v:3,w:3,y:3,h:1,z:1},b:{b:3,a:19,e:19,y:3,l:6,o:17,u:12,i:9,s:9,r:6},e:{d:7,l:8,t:4,s:10,n:11,e:10,r:10,c:2,x:2,w:4,a:13,f:1,p:2,g:2,v:1,b:1,m:3,u:1,i:1,k:1,y:2},l:{e:16,y:5,a:16,b:1,f:2,l:12,m:2,o:14,p:1,s:2,u:8,d:4,i:10,k:3,t:5},o:{s:7,g:3,e:3,k:3,n:10,m:4,p:5,w:6,b:3,c:2,t:6,a:5,d:5,h:1,i:2,l:8,o:9,r:8,u:4,y:2,v:2,z:1,f:2,x:1},u:{t:8,e:5,m:7,s:11,a:2,n:13,r:15,d:6,c:4,f:1,g:5,l:9,y:1,z:1,b:5,j:1,x:1,p:2,k:1,i:2},c:{e:9,h:12,i:2,r:6,t:3,o:20,k:15,a:16,l:6,u:8,y:1},h:{e:21,r:2,a:22,i:15,o:20,u:15,n:3,l:1,y:1},i:{d:8,m:5,n:18,r:7,a:2,s:8,v:2,l:13,t:10,b:1,e:6,k:2,p:5,g:3,c:6,o:2,f:2,z:1},m:{e:19,s:8,a:21,i:12,m:1,o:15,y:2,b:4,p:8,n:1,u:8},n:{e:18,u:3,a:9,d:10,n:4,o:7,s:11,t:11,g:10,k:6,i:5,y:2,c:1},r:{e:18,s:4,y:4,a:16,c:1,g:1,i:12,m:3,p:2,t:4,b:1,d:4,k:4,n:5,r:2,o:11,l:2,u:6,f:1},t:{a:14,s:17,e:18,i:9,o:15,h:10,t:3,y:2,c:1,z:1,u:5,r:5,w:2},d:{a:14,d:4,s:10,e:22,y:8,i:12,o:14,r:4,u:10,l:1},f:{a:16,f:6,e:12,y:1,i:14,l:13,o:16,r:7,u:7,t:7,n:1,s:1},g:{a:16,e:12,o:17,u:7,s:18,g:1,y:2,i:8,l:4,n:2,h:3,r:9,w:1},j:{a:25,i:7,e:14,o:25,u:29},k:{i:23,s:6,e:41,u:6,a:10,l:2,n:8,o:2,h:1,y:1},p:{s:12,e:20,a:19,y:2,i:13,t:2,u:10,l:5,o:13,r:4},s:{o:8,i:8,e:13,k:6,h:10,s:8,t:14,y:1,p:5,c:2,l:6,a:10,m:1,n:2,u:4,w:2},v:{a:18,e:47,i:22,o:8,y:6},y:{l:4,e:18,s:20,d:3,n:8,r:8,t:4,a:14,k:1,m:1,o:8,x:3,p:3,u:4,v:1},q:{u:100},w:{a:24,e:17,l:4,r:3,s:10,n:6,y:2,k:1,d:1,t:1,i:17,u:1,o:10,h:4},x:{e:35,i:18,l:6,o:6,a:6,t:12,y:18},z:{z:10,y:10,a:3,e:43,r:3,o:17,i:10,u:3}},p=1,x,y,i=0;for(;i<3;){x=w[i],y=w[++i];p*=g[x]&&g[x][y]||0}return p>60}

Berikut ini adalah implementasi yang berfungsi http://fiddle.jshell.net/jc73sjyn/

Singkatnya: Objek g menampung karakter dari a hingga z (sebagai kunci), dan untuk masing-masingnya, ada satu set karakter (juga sebagai kunci) yang masing-masing mewakili karakter yang mungkin muncul setelahnya, beserta persentase probabilitasnya . Jika tidak ada objek, tidak ada probabilitas.

3 skor (4 huruf -> 3 evaluasi) dikalikan, dan kata dengan skor 60 ke atas dianggap sebagai kata nyata.

Contoh: untuk kata 'cope' ada tiga pencarian:

g [c] [o] = 20

g [o] [p] = 5

g [p] [e] = 20

skor = 20 * 5 * 20 = 2000, yang lebih dari 60, sehingga yang valid.

(Saya cukup baru dengan javascript, jadi mungkin ada cara untuk membuatnya lebih pendek yang saya tidak tahu.)

EDIT TERAKHIR:

Benar-benar tidak relevan sekarang, tetapi saya mengevaluasi jalan saya ke g yang lebih benar:

g={a:{b:7,c:4,d:4,m:6,f:2,r:14,g:4,i:6,x:2,k:2,l:10,n:12,s:6,p:4,t:7,u:2,v:3,w:12,y:3,h:1,z:1},b:{b:10,a:19,e:19,y:3,l:6,o:17,u:10,i:9,s:9,r:3},e:{d:7,l:8,t:4,s:10,n:11,e:10,r:10,c:2,x:2,w:4,a:13,f:1,p:2,g:2,v:20,b:3,m:3,u:1,i:1,k:1,y:2},l:{e:16,y:5,a:16,b:1,f:2,l:12,m:2,o:14,p:1,s:6,u:61,d:1,i:10,k:3,t:5},o:{s:7,g:3,e:3,k:3,n:20,m:4,p:5,w:6,b:3,c:2,t:6,a:5,d:5,h:10,i:2,l:8,o:3,r:8,u:4,y:2,v:2,z:1,f:20,x:1},u:{t:8,e:5,m:7,s:11,a:2,n:13,r:15,d:6,c:1,f:10,g:5,l:9,y:1,z:1,b:5,j:1,x:1,p:2,k:1,i:2},c:{e:9,h:20,i:2,r:6,t:20,o:15,k:15,a:15,l:6,u:8,y:1},h:{e:21,r:2,a:7,i:15,o:20,u:15,n:10,l:0,y:1},i:{d:8,m:5,n:18,r:7,a:5,s:8,v:2,l:13,t:20,b:1,e:21,k:2,p:5,g:20,c:4,o:2,f:2,z:1},m:{e:10,s:8,a:21,i:12,m:1,o:15,y:2,b:4,p:2,n:1,u:8},n:{e:18,u:3,a:9,d:3,n:4,o:20,s:2,t:11,g:10,k:6,i:5,y:2,c:1},r:{e:15,s:4,y:4,a:16,c:1,g:1,i:12,m:3,p:2,t:4,b:1,d:4,k:4,n:5,r:2,o:11,l:2,u:20,f:1},t:{a:14,s:15,e:18,i:2,o:15,h:10,t:3,y:2,c:1,z:1,u:5,r:5,w:2},d:{a:14,d:4,s:10,e:61,y:8,i:12,o:7,r:3,u:10,l:0},f:{a:5,f:6,e:12,y:1,i:3,l:13,o:16,r:7,u:20,t:4,n:1,s:1},g:{a:16,e:12,o:17,u:7,s:18,g:0,y:2,i:8,l:3,n:2,h:3,r:9,w:1},j:{a:8,i:7,e:14,o:5,u:29},k:{i:3,s:20,e:41,u:6,a:10,l:20,n:8,o:2,h:1,y:1},p:{s:12,e:20,a:5,y:2,i:13,t:4,u:10,l:3,o:13,r:4},s:{o:8,i:8,e:13,k:6,h:10,s:8,t:14,y:1,p:5,c:2,l:2,a:10,m:2,n:6,u:8,w:2},v:{a:10,e:20,i:22,o:6,y:6},y:{l:6,e:15,s:20,d:3,n:8,r:8,t:4,a:4,k:1,m:1,o:3,x:3,p:3,u:1,v:1},q:{u:100},w:{a:24,e:17,l:4,r:2,s:3,n:6,y:20,k:1,d:1,t:1,i:17,u:6,o:10,h:20},x:{e:35,i:6,l:3,o:6,a:6,t:3,y:7},z:{z:10,y:10,a:3,e:43,r:1,o:8,i:7,u:1}}

Hasil baru:

kata: 53 kesalahan, non-kata: 159 kesalahan

http://fiddle.jshell.net/jc73sjyn/2/

Henrik Christensen
sumber
Saya harus menambahkan bahwa angka-angka itu ditemukan melalui evaluasi 2236 kata-kata yang benar. Untuk setiap huruf saya cukup menghitung persentase bulat dari setiap penerus. Saya menganggap melakukan hal yang sama untuk kata-kata yang salah dan entah bagaimana menguranginya, tetapi saya pikir itu akan membuat evaluasi menjadi kurang pintar dan lebih mengambil keuntungan dari serangkaian kata-kata yang salah.
Henrik Christensen
2
Saya telah berhasil mengurangi kode Anda sebanyak mungkin. Saya sudah makan sekitar 80 byte. Tidak banyak, tetapi lebih kecil. Berikut kodenya: pastebin.com/fkPW0D92 . Saya telah mengganti SEMUA angka yang diulang lebih dari 3 kali dan masih menghilangkan banyak kembung dari forloop Anda .
Ismael Miguel
Lupa menyebutkan: itu hanya berfungsi di Firefox / Firebug console. Ini menggunakan notasi panah besar ES6 baru untuk membuat fungsi. Anda dapat mengganti w=>dengan function(w)dan itu akan berfungsi untuk setiap browser.
Ismael Miguel
6

Python 2, 5254 byte

Solusi ini memisahkan kata-kata baik menjadi dua bagian. Pencarian pertama memeriksa 2 karakter pertama untuk menemukan string yang tepat, kemudian mencari 2 karakter kedua dalam string itu. Tidak terlalu ringkas, tetapi cepat untuk menulis. Metode ini cocok dengan setiap kata tanpa kesalahan.

d='''gwenyn
guamlflllpmsnsrushsttsys
grabadamayegeweyidiminipisitowub
gyro
gearldlsmsnentrmts
gagsilinitlellltmengpepsrbryshspteulvewkze
goadalatbidsesffghldlfnengodofreryshtoutwn
gnataw
gladeeenowueut
giftldllltnannnonsrdrlrtstve
wrapenit
leadafakanaparekeresftgsnandnsntonsssttsvivywd
labsceckcydsdygsidinirkembmempnandnengospsrdrkrsshssstteuevawnwsyszy
loadafanbecickebftgogsiniskilambmenengokomonopotrdresesssttsudutvewews
tubebsckftgsnerfrn
trapayeeekimioipodotoyueuk
liarceckdsedeneseufeftkelalymambmempndnenkntonpssasespssstve
toadbyddesgoilldllmbneninsokolpsrernrysstourwnys
luckcyiskellmpndngrarerkshsttetz
thaianataweaemeneyinisorudugus
tickdedyedereslellltmemsnansntnypsretots
teamarasemenllndnsntrmssstxt
lylennnxonrare
dockdderesgegslellmenensomorperasetetsugvewnze
typepo
yokerkstur
dialcedoedemesetgskellmemsnengntonpsrertscshskve
yagilenkrdrnwn
deadafalanarbtckedemeperfyllmonsntnyskuswy
yearaslllp
dadadedshllelilymemnmpmsnanererkrnrtshtatevevywnysze
dyadedereskene
dualbsckctelesetkelllymbmpnengnknnpeskstty
drabagamawewipopugum
yves
yubakiri
quadayipitiz
iranaqesisksmaon
emilitma
elbakslamsse
endsidosvy
eire
zincon
ekedes
eels
eddyengeitna
egangsos
eachrlrnrprssestsyts
echo
ebbsen
eyederes
examecit
ezra
etch
ewenes
eveneril
wokelfmbngntodofolosrdrerkrmrnve
epic
espy
erasgoicieikisneosrs
rubebsbydedygsinlempngnsntshssstthts
ryan
readalamapardodsedefelidinlymynandnenontstub
raceckftgegsidilinkemompmsndngnkntpepsptreshsptetsulveysze
itchelem
roadamarbebsckdedslellmempofokomotpesasesssythtsutvewewsxy
rhea
ribscacechckcodedsftgagsllmemsndngnkotpepsscsesktetz
beadakamanaratauckdsefeneperesetgslallltlyndntnzrnrtsssttatsvy
weakanarbbbsdsedekephrldllntptrestts
babebychckdegsilitjakekuldlelilklllmndnengnknsrbrdrerkrnrrrsrtseshskssthtsudwlys
wacodeftgegshlilitkelkllltndnengntrdrermrnrprsrtryshspvexyys
blabedewipobocotowueumur
juandddedodygslympnengnknorareryst
boaratbscadedyergshrilisldllltmbndnengnnnyobokomonorosotrergrnsessthutwlwsydys
biasbsdedsenerkelelkllndngninsrdtets
wickdeerfegsldlellltlyndnengnknspereryseshspthtstt
whatenimipitizom
buckdddsffgslblkllmpmsnknsntoyrlrnrprrrtryshssstsyttyszz
joanbsdyelesgshninkeltsetsveys
jigsll
braeaganasatayedewieigimowyn
jeaneperffrksttsws
byrdte
wynn
ooze
onceeslytousyx
omanenit
olafavdyeggain
okay
oilsly
ohio
offs
oddsesinor
obeyoe
oaksrsthts
ivan
stabaganarayemepewiropowubudunyx
oxen
owedeneslsns
ovalenerid
ouchrsstts
otisto
oslo
oralesgyinly
opalecelentsus
vialcedaederesetewlenesatato
citety
chadaoaparatefenewicinipitopouum
coalataxbbcackcodedyedgshnilinkeldleltmbmeneokolonoppepspyrdrerkrnstsytsvewlwszy
cladamanapawayioipodogotubueuj
cabsdyfegeinkelflllmmempnensntpepsrdrerlrprrrsrtseshsksttsve
cedellltntrn
czar
cyst
zoneomosrn
crabagamayeeewibopowuduxuz
cubabebsedesffllltpsrbrdrerlrsrtsptets
vealdaergailinlannntrarbrnrystto
prayepeyimodoposow
pubsffghkelllpmampnsntnypapsrerrshsststt
smogugut
pylere
jabsckdeilkemsnersvawszz
paceckctdsgeidilinirlelllmlolsnengnsntparcrerkrrrsrtsosssttethtsulvewnwsys
peakalarasatckekelepergsltndnhnnnsntrkrusttetsws
phil
picackcteresgskelellmpnengnknsntonpesassthtstttyus
isisle
planayeaodotowoyugumus
hydemn
hubsckeseygeghgollmempmsngnknsntrdrlrtshskts
hickdeghkellltndntpsresstsve
hoaresffgsldlelmlymemoneodofokopotpepipsrnsesturwewlyt
haagasckhnilirlelfllltmsndngnsrdrerkrmrprtshtetsulvewkyszezy
headalaparatbeckedelirldlllmlpmpmsnsrarbrdrerorrrsssws
meadalanateketltmondnsnureshsstatetsws
macechdeidiliminkelelillltmanennnsnypsrcrerkrsrtrxryshsksssttethtsttulwryayoze
utah
moanatbsckdeenhrldlellnankntodonorotpsrernssstthvews
micaceckenkeldlelkllmindneninkntpsraressst
upon
twasiginos
podsemetgokelelklllompndngnyolorpepsrerkrtseshsttsurut
muchckddffgsirlellngseshsksttettzo
ulan
undoitixixto
imps
ugly
tabsckctftgsilkelelkllmengnkospepsrartskssteutxi
myrath
illsly
vailinlenensrysestts
acesheidmeneretats
abbabebyedeletlelyosut
adamdsen
agaredeeeresogue
afar
aidadedsmsnursry
swabamanapatayimum
akin
ajarax
amenesidmookosyl
alanarasbaeceeexfagalymamsoepssoumva
analdyewnaneonsitetitsus
aqua
apedesexse
asiaks
arabchcocseaesgoidmsmypats
auntrato
atomop
awayedlsry
averidisivonow
ayes
axedeleresisleon
icedeson
ibexidis
ideaemlelyol
igor
ifni
niceckghlenaneps
usederes
noahdedselllneokonrarmseteun
nagsgyilirmepsrysashtetourvyzi
nealaratckedffilllonrosssttsvawswtxt
voidltsstews
zulu
nudellmbnsts
franauayedeeeteyogomye
urdugeisnssa
fueljillmendnkrsrysesszz
ionstawa
facectdegsilinirkelkllmengnsrermsttetsunwnze
fearatedelesetllltndrnssud
zealrostus
fiateffegsjilelllmndnenknnnsrermshsksttsve
flagakamapatawaxeaedeeewexipitogopowueux
foalamciesgsgyilldlkndntodolotrdrerkrmrtssulurwl
kahnlinentrlrptetz
incachdodyksnsto
keelenepmpntptrnrrys
kickdselevllndngnkrksstets
spanatecedinitotunur
kochng
kneeewitobotowox
subschckdsedesezitlkmsngnknsrerf
klanux
skewidiminipisitye
siamanckdeftghgnkhlkllloltmsnengnknspsrerstetstuvaze
shameaedinipitodoeopotowunut
soakaparbsckdadsfaftilldlelomengnsnyonotrertulupurwnya
snagapipobowubug
kudohnrdrt
slabamapatavayedewidimipitobopotowugumur
scabanarotowud
sackfegagegsidilkelelkltlzmenandnengnkpsrarishteudulvewsys
sealamanarasatctedekemenepereslfllmindntptrfthtswsxy'''
w=raw_input()
s=[t[2:] for t in d.split() if t[:2]==w[:2]]
print s and w[2:] in [s[0][i:i+2] for i in range(0,len(s[0]),2)]
Ksatria Logika
sumber
5

C # WPF, 110 139

Singkat

bool F(string s){var t=new TextBox();t.SpellCheck.IsEnabled=true;t.Text=s;return t.GetSpellingError(0)==null;}

Jawaban lama

public bool F(string s){TextBox t=new TextBox();t.SpellCheck.IsEnabled=true;t.Text=s;SpellingError e=t.GetSpellingError(0);return e==null;}
bacchusbeale
sumber
1
Apakah ini mengambil lokal default? :)
RobAu
@RobAu Tidak yakin, pertama kali saya menggunakannya.
bacchusbeale
Anda bisa membuatnya sedikit lebih pendek dengan menggunakan vardan tidak memperkenalkan variabel kecuali diperlukan.
lesderid
3

Word VBA, 25 Bytes

Fungsi jendela langsung VBE anonim yang mengambil input sebagai pilihan saat ini dan menghasilkan jika itu adalah kata sebagai boolean ke jendela langsung VBE.

?CheckSpelling(Selection)

Fungsi Penguji

Fungsi di bawah ini digunakan untuk menguji fungsi di atas terhadap testcases. Fungsi gagal 9,07 persen dari kasus (396 dari kata-kata aktual dan 10 dari kata-kata palsu)

i=0:For Each w In Split(Selection,vbcr):i=i-CheckSpelling(w):Next:?i" were recognized as words
Taylor Scott
sumber
2

Mathematica, 33 byte

Hei, seseorang harus melakukannya!

Length[DictionaryLookup[Input[]]]

Cukup jelas.

Hipe99
sumber
0

Javascript ES6, 32 byte:

Menggunakan regex dari @ Sp3000 jawab :

s=>!/[^aeiou]{3}|[jqxz]/.test(s)

Ini menciptakan fungsi anonim. Untuk menggunakannya, Anda cukup membungkusnya ().

Contoh:

(s=>!/[^aeiou]{3}|[jqxz]/.test(s))('word')

Ini memiliki tingkat kegagalan yang persis sama dengan @ Sp3000, dan kembalitrue atau falsesesuai.

Semua kredit karena @ Sp3000 karena mengizinkan saya menggunakan regex-nya.

Ismael Miguel
sumber
@ Sp3000 Tapi Anda tidak akan bisa menyebutnya. Ini sama dengan F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Ismael Miguel
@ Sp3000 Saya tahu ini bekerja, tetapi Anda harus menghabiskan lebih banyak byte untuk menggunakannya.
Ismael Miguel
@ Sp3000 BERBAHAYA! Satu langkah lagi dari memperpendeknya: / Terima kasih atas tipnya. Saya sudah memperbaruinya.
Ismael Miguel