È anche una parola?


54

Dovresti scrivere un programma o una funzione che accetta una stringa di 4 caratteri come input e genera un valore che indica se la stringa è una parola inglese o meno. Hai il permesso di fare errori nel 15% delle prove fornite.

Dettagli di input:

L'input è una stringa di 4 caratteri contenente solo le lettere inglesi minuscole (az).

Dettagli di uscita:

Se l'input è una parola inglese, dovresti generare un valore booleano trueo un numero intero 1.

Se l'input non è una parola inglese, dovresti generare un valore booleano falseo un numero intero 0.

Elenchi di parole

elenco di parole inglesi di 4 lettere (2236 parole)

elenco di stringhe non di parole di 4 lettere (2236 stringhe)

L'elenco di non parole contiene sequenze di lettere generate in modo uniforme in modo casuale con le parole reali rimosse da esse.

analisi

Il programma o la funzione non devono commettere errori di oltre il 15% sugli elenchi di parole indicati insieme. Ciò significa che è possibile fornire un output errato per 670 dei 4472 input forniti.

Dovresti pubblicare anche il programma o la funzione di test in modo che altri possano verificare la tua risposta. La durata del programma di test non viene conteggiata nel punteggio inviato.

Le scappatoie standard non sono ammesse.

Il tuo programma non dovrebbe utilizzare alcuna fonte esterna, ad esempio l'accesso al web o la lettura da file.

Questo è code-golf, quindi vince il programma o la funzione più breve.


4
Quell'array deve essere parte del codice. (Suppongo). @randomra - tieni presente che non puoi leggere / accedere all'elenco di parole da nessuna parte ..
Ottimizzatore

3
@BryanDevaney dovresti solo codificare l'85% dell'elenco
dwana

1
@TeunPronk Sì.
randomra,

2
@Sparr Esistono ancora altri modi per risolvere il problema, come in questa domanda
Sp3000,

5
"E ' questa anche una parola?" Sì. [<- 4 caratteri]
Chucksmash,

Risposte:


62

Rubino, 29 byte

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

Spero di aver capito bene: è la prima volta che programmo su Ruby. In realtà ho fatto tutti i test su Python, ma import reera troppo lungo per me.

Questa è una funzione anonima che accetta una stringa e genera di true/falseconseguenza. Usa una regex che cerca una delle due cose seguenti:

  • Tre consonanti di fila
  • Contiene uno dei jqxz

Se uno di questi è presente, classifichiamo l'input come non una parola.

La funzione corrisponde a 2030 parole (errore non corretto su 206) e errore su 1782 non parole (erroneamente corrispondenza 454), per un totale di 660 classificazioni errate. Testato su ideone .

Grazie a @ MartinBüttner per l'aiuto di Ruby. Martin sottolinea inoltre che un programma completo richiede lo stesso numero di byte:

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

Anche grazie a user20150203 per semplificare la regex.


Rubino, 1586 1488 1349 1288 1203 byte

Per un bonus, ecco una funzione con una regex molto più lunga:

->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]/]}

Volevo dimostrare che regex può ancora battere la compressione, quindi questo classifica correttamente ogni caso . La stessa regex è un po 'come il decadimento esponenziale: i primi bit corrispondono a molte non parole, quindi ogni bit dopo corrisponde sempre meno fino a quando ho rinunciato e alla fine ho solo concatenato il resto (circa 200 circa). Alcuni di quelli che erano rimasti sembravano sorprendentemente parole reali (come quella chiache è una parola).

Ho gettato la regex sul mio pulitore da golf regex che ho scritto per un'altra sfida: ha golf circa 300 byte prima che dovessi provare a mescolare le cose manualmente. C'è ancora un bel po 'da giocare a golf.


1
user20150203 (privo del rappresentante per commentare) ha suggerito quanto segue in una modifica che ho rifiutato in base a questa discussione : "Modifica da un nuovo utente senza reputazione: ->s{!s[/[^aeiou]{3}|[jqxz]/]}ha solo 29 byte e corrisponde a 2030 parole (errore non corretto su 206) e errore su 1782 non -words (erroneamente corrispondente a 454), per un totale di 660 classificazioni errate. "
Martin Ender,

È strano, pensavo di aver testato la rimozione di ogni carattere - che avrei dovuto dimenticare v. Grazie user20150203!
Sp3000,

@ Sp3000 Mi concedi l'autorizzazione per utilizzare il tuo regex in una risposta per me? Ti attribuirò la reputazione (se possibile) e tutti i crediti saranno indicati nella risposta.
Ismael Miguel,

@IsmaelMiguel È solo una lingua in cui è molto più breve scrivere una funzione per una corrispondenza regex? Se è così, ammetto di essere un po 'curioso ... (quindi posso rubarlo per la prossima volta!)
Sp3000,

@ Sp3000 Non è più corto. Ma voglio solo pubblicare qualcosa. È passato molto tempo da quando ho pubblicato qualcosa qui comunque. E amplierà un po 'le mie conoscenze. Quindi, è una situazione vantaggiosa per me. E ti garantirò una certa reputazione, se possibile, quindi è una vittoria anche per te (forse).
Ismael Miguel,

13

Groovy, 77 74

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

Ho scritto il programma di test in Java, che puoi trovare in questo Gist su Github. Ecco l'output dal mio programma di test:

Good: 2135 1708
Bad: 101 528

(629 casi di test non riusciti)

PS Penso che questo finirà per risolvere un problema di regex molto presto ...

Se la risposta di Sp3000 (la funzione) deve essere convertita in Groovy, finirà con lo stesso conteggio dei caratteri. Come funzione denominata:

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

o funzione senza nome:

{i->i!=~/[^aeiou]{3}|[jqxz]/}

può solo fallire 335 casi;) ma comunque abbastanza pulito
Teun Pronk

sembra così sbagliato, eppure funziona ^^
dwana,

@TeunPronk: (2236 + 2236) * 0,15 = 670,8. quindi puoi fallire 670. Penso che ti sia dimenticato di classificare correttamente le non parole. "Il tuo programma o la tua funzione non dovrebbero commettere più del 15% di errori sugli elenchi di parole indicati insieme ." (enfasi mia)
Neil Slater,

@NeilSlater Aah, Yup, ho considerato solo quelli corretti. Mio cattivo ^^
Teun Pronk,

9

Javascript, 1626 byte:

Volevo cercare una soluzione che per ogni personaggio abbia un indizio su cui si potrebbe venire. Non così breve, ma senza regex e un risultato abbastanza buono (parole: 101 errori, non parole, 228 errori)

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}

Ecco un'implementazione funzionante http://fiddle.jshell.net/jc73sjyn/

In breve: l'oggetto g contiene i caratteri dalla a alla z (come chiavi) e per ciascuno di essi esiste un insieme di caratteri (anche come chiavi) che rappresentano ciascuno un carattere che può venire dopo, insieme alla sua percentuale di probabilità . Laddove non esiste alcun oggetto, non vi è alcuna probabilità.

I 3 punteggi (4 lettere -> 3 valutazioni) vengono moltiplicati e una parola con un punteggio di 60 e superiore viene considerata una parola reale.

Esempio: per la parola 'cope' ci sono tre ricerche:

g [c] [o] = 20

g [o] [p] = 5

g [p] [e] = 20

punteggio = 20 * 5 * 20 = 2000, che è più di 60, quindi uno è valido.

(Sono abbastanza nuovo con JavaScript, quindi potrebbero esserci dei modi per renderlo più breve di cui non sono a conoscenza.)

MODIFICA TARDI:

Ormai completamente irrilevante, ma ho valutato la mia strada per un g più corretto:

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}}

Nuovi risultati:

parole: 53 errori, non parole: 159 errori

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


Vorrei aggiungere che i numeri sono stati trovati attraverso la valutazione delle 2236 parole corrette. Per ogni lettera calcolerei semplicemente la percentuale arrotondata di ciascun successore. Ho pensato di fare lo stesso per le parole sbagliate e in qualche modo sottrarle, ma penso che renderebbe la valutazione meno intelligente e trarrebbe vantaggio dalla serie limitata di parole sbagliate.
Henrik Christensen,

2
Sono riuscito a ridurre il tuo codice il più possibile. Ho mangiato circa 80 byte. Non molto, ma è più piccolo. Ecco il codice: pastebin.com/fkPW0D92 . Ho sostituito TUTTI i numeri che sono stati ripetuti più di 3 volte e ho comunque rimosso molti gonfiori dal tuo forloop.
Ismael Miguel,

Hai dimenticato di menzionare: funziona solo su console Firefox / Firebug. Questo utilizza la nuova notazione con freccia grande ES6 per creare funzioni. Puoi sostituirlo w=>con function(w)e funzionerà per ogni browser.
Ismael Miguel,

6

Python 2, 5254 byte

Questa soluzione separa le buone parole in due metà. La ricerca controlla prima i primi 2 caratteri per trovare la stringa giusta, quindi cerca i secondi 2 caratteri in quella stringa. Non molto compatto, ma veloce da scrivere. Questo metodo abbina ogni parola senza errori.

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)]

5

C # WPF, 110 139

Più breve

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

Vecchia risposta

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

1
Prende le impostazioni internazionali predefinite? :)
RobAu,

@RobAu Non sono sicuro, la prima volta che l'ho usato.
bacchusbeale,

Puoi renderlo un po 'più breve usando vare non introducendo variabili a meno che non sia necessario.
lesderid,

3

Parola VBA, 25 byte

Funzione di finestra immediata VBE anonima che accetta input come selezione corrente e genera se è una parola booleana nella finestra immediata di VBE.

?CheckSpelling(Selection)

Funzione tester

La funzione di seguito è stata utilizzata per testare la funzione di cui sopra rispetto ai casi di test. La funzione ha fallito il 9,07 percento dei casi (396 delle parole effettive e 10 delle parole false)

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

2

Mathematica, 33 byte

Ehi, qualcuno doveva farlo!

Length[DictionaryLookup[Input[]]]

Spiega da sé.


0

Javascript ES6, 32 byte:

Usando il regex dalla risposta @ Sp3000 :

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

Questo crea una funzione anonima. Per usarlo, basta semplicemente avvolgerlo ().

Esempio:

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

Questo ha esattamente lo stesso tasso di fallimento di @ Sp3000 e restituisce trueo di falseconseguenza.

Tutti i crediti dovuti a @ Sp3000 per avermi permesso di usare la sua regex.


@ Sp3000 Ma poi non sarai in grado di chiamarlo. Questo è lo stesso di F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Ismael Miguel,

@ Sp3000 So che funziona, ma devi usare più byte per usarlo.
Ismael Miguel,

@ Sp3000 PERICOLO! A un passo dal ridurlo: / Grazie per la punta. L'ho aggiornato.
Ismael Miguel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.