¿Es esto incluso una palabra?


54

Debe escribir un programa o función que tome una cadena de 4 caracteres como entrada y genere un valor que indique si la cadena es una palabra en inglés o no. Se le permite cometer errores en el 15% de los casos de prueba proporcionados.

Detalles de entrada:

La entrada es una cadena de 4 caracteres que contiene solo las letras minúsculas en inglés (az).

Detalles de salida:

Si la entrada es una palabra en inglés, debe generar un booleano trueo un entero 1.

Si la entrada no es una palabra en inglés, debe generar un booleano falseo un entero 0.

Listas de palabras

lista de palabras en inglés de 4 letras (2236 palabras)

lista de cadenas de 4 letras sin palabras (2236 cadenas)

La lista sin palabras contiene secuencias de letras generadas de manera uniforme y aleatoria con las palabras reales eliminadas de ellas.

Pruebas

Su programa o función no debe cometer más del 15% de errores en las listas de palabras dadas juntas. Eso significa que puede dar una salida incorrecta para 670 de las 4472 entradas proporcionadas.

También debe publicar el programa o la función de prueba para que otros puedan verificar su respuesta. La duración de su programa de pruebas no cuenta en su puntaje de envíos.

Las lagunas estándar no están permitidas.

Su programa no debe usar ninguna fuente externa, por ejemplo, acceder a la web o leer archivos.

Este es el código de golf, por lo que gana el programa o la función más corta.


44
Esa matriz tiene que ser parte del código. (Supongo). @randomra: tenga cuidado al mencionar que no puede leer / acceder a la lista de palabras desde cualquier lugar ..
Optimizer

3
@BryanDevaney solo deberías codificar el 85% de la lista
dwana

1
@TeunPronk Sí.
randomra

2
@Sparr Todavía hay otras formas de resolver el problema, como en esta pregunta
Sp3000

55
"¿Es esto incluso una palabra?" Si. [<- 4 caracteres]
chucksmash

Respuestas:


62

Ruby, 29 bytes

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

Espero haber entendido bien, es la primera vez que programo en Ruby. Realmente hice todas mis pruebas en Python, pero import refue demasiado largo para mí.

Esta es una función anónima que toma una cadena y emite en true/falseconsecuencia. Utiliza una expresión regular que busca una de las siguientes dos cosas:

  • Tres consonantes seguidas
  • Contiene uno de jqxz

Si alguno de estos está presente, clasificamos la entrada como no una palabra.

La función coincide con 2030 palabras (fallando incorrectamente en 206) y falla en 1782 sin palabras (incorrectamente 454), para un total de 660 clasificaciones erróneas. Probado en ideone .

Gracias a @ MartinBüttner por la ayuda de Ruby. Martin también señala que un programa completo toma la misma cantidad de bytes:

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

También gracias a user20150203 por simplificar la expresión regular.


Rubí, 1586 1488 1349 1288 1203 bytes

Para un bono, aquí hay una función con una expresión regular mucho más larga:

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

Quería mostrar que la expresión regular aún puede vencer a la compresión, por lo que esta clasifica cada caso correctamente . La expresión regular en sí es un poco como la descomposición exponencial: los primeros bits coinciden con muchas no palabras, luego cada bit coincide con menos y menos hasta que me di por vencido y concatenaba el resto (aproximadamente 200) al final. Algunos de los que quedaron parecían sorprendentemente palabras reales (como chiacuál es una palabra).

Lancé el regex a mi limpiador de golf regex que escribí para otro desafío: jugó unos 300 bytes antes de tener que intentar barajar las cosas manualmente. Sin embargo, todavía queda bastante por jugar.


1
user20150203 (sin el representante para comentar) sugirió lo siguiente en una edición que rechacé en base a esta discusión : "Editar por un nuevo usuario sin reputación: ->s{!s[/[^aeiou]{3}|[jqxz]/]}tiene solo 29 bytes y coincide con 2030 palabras (fallando incorrectamente en 206) y falla en 1782 no -palabras (que coinciden incorrectamente 454), para un total de 660 clasificaciones erróneas ".
Martin Ender

Eso es extraño, pensé que había probado eliminar cada carbón, debí haberlo olvidado v. Gracias usuario20150203!
Sp3000

@ Sp3000 ¿Me otorga autorización para usar su expresión regular en una respuesta por mí? Te acreditaré con reputación (si es posible) y todos los créditos se señalarán en la respuesta.
Ismael Miguel

@IsmaelMiguel ¿Es solo un lenguaje donde es mucho más corto escribir una función para una coincidencia de expresiones regulares? Si es así, admito que tengo un poco de curiosidad ... (¡así que puedo robarlo la próxima vez!)
Sp3000

@ Sp3000 No es más corto. Pero solo quiero publicar algo. Ha pasado mucho tiempo desde que publiqué algo aquí de todos modos. Y ampliará un poco mi conocimiento. Entonces, es una situación de ganar-ganar para mí. Y te otorgaré algo de reputación, si es posible, así que también es una victoria para ti (posiblemente).
Ismael Miguel

13

Groovy, 77 74

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

Escribí el programa de prueba en Java, que puedes encontrar en este Gist en Github. Aquí está la salida de mi programa de prueba:

Good: 2135 1708
Bad: 101 528

(Falló 629 casos de prueba)

PD: Creo que esto va a terminar con un problema de expresiones regulares de golf muy pronto ...

Si la respuesta de Sp3000 (la función) se va a convertir a Groovy, terminará con el mismo número de caracteres. Como función nombrada:

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

o función sin nombre:

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

solo puede fallar 335 casos;) pero sigue siendo bastante bueno, sin embargo
Teun Pronk

esto se siente tan mal, pero funciona ^^
dwana 03 de

@TeunPronk: (2236 + 2236) * 0.15 = 670.8. así que puedes fallar 670. Creo que te has olvidado de clasificar las no palabras correctamente. "Su programa o función no deben cometer más del 15% de errores en las listas de palabras dadas juntas ". (énfasis mío)
Neil Slater

@NeilSlater Aah, sí, solo consideré las correctas. My bad ^^
Teun Pronk

9

Javascript, 1626 bytes:

Quería buscar una solución que para cada personaje tenga una idea de cuál podría ser el siguiente. No es tan breve, pero no tiene expresiones regulares y un resultado bastante bueno (palabras: 101 errores, no palabras, 228 errores)

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}

Aquí hay una implementación funcional http://fiddle.jshell.net/jc73sjyn/

En resumen: el Objeto g contiene los caracteres de la a a la z (como teclas), y para cada uno de ellos, hay un conjunto de caracteres (también como teclas) que representan cada uno un carácter que puede aparecer después, junto con su porcentaje de probabilidad . Donde no existe ningún objeto, no hay probabilidad.

Las 3 puntuaciones (4 letras -> 3 evaluaciones) se multiplican, y una palabra con una puntuación de 60 o más se considera una palabra real.

Ejemplo: para la palabra 'hacer frente' hay tres búsquedas:

g [c] [o] = 20

g [o] [p] = 5

g [p] [e] = 20

puntaje = 20 * 5 * 20 = 2000, que es más de 60, por lo que uno es válido.

(Soy bastante nuevo con javascript, por lo que podría haber formas de acortarlo que no conozco).

EDICIÓN TARDÍA:

Completamente irrelevante por ahora, pero evalué mi camino hacia una g más correcta:

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

Nuevos resultados:

palabras: 53 errores, no palabras: 159 errores

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


Debo agregar que los números se encontraron a través de la evaluación de las 2236 palabras correctas. Para cada letra, simplemente calcularía el porcentaje redondeado de cada sucesor. Pensé en hacer lo mismo para las palabras incorrectas y de alguna manera restarlas, pero creo que eso haría que la evaluación fuera menos inteligente y aprovechara más el conjunto limitado de palabras incorrectas.
Henrik Christensen

2
Me las arreglé para reducir su código tanto como pude. He comido alrededor de 80 bytes. No mucho, pero es más pequeño. Aquí está el código: pastebin.com/fkPW0D92 . Reemplacé TODOS los números que se repitieron más de 3 veces y aún eliminé mucha hinchazón de tu forciclo.
Ismael Miguel

Olvidé mencionar: solo funciona en la consola Firefox / Firebug. Esto utiliza la nueva notación de flecha grande ES6 para crear funciones. Puede reemplazar w=>por function(w)y funcionará para todos los navegadores.
Ismael Miguel

6

Python 2, 5254 bytes

Esta solución separa las buenas palabras en dos mitades. La búsqueda primero verifica los primeros 2 caracteres para encontrar la cadena correcta, luego busca los segundos 2 caracteres en esa cadena. No muy compacto, pero rápido de escribir. Este método coincide con cada palabra sin errores.

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

Más corta

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

Vieja respuesta

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
¿Toma la configuración regional predeterminada? :)
RobAu

@RobAu No estoy seguro, la primera vez que lo usé.
bacchusbeale

Podría hacerlo un poco más corto al usar vary no introducir variables a menos que sea necesario.
lesderid

3

Palabra VBA, 25 bytes

Función de ventana inmediata anónima de VBE que toma la entrada como la selección actual y emite si es una palabra como booleana a la ventana inmediata de VBE.

?CheckSpelling(Selection)

Función de prueba

La siguiente función se usó para probar la función anterior contra los casos de prueba. La función falló el 9.07 por ciento de los casos (396 de las palabras reales y 10 de las palabras falsas)

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

2

Mathematica, 33 bytes

¡Oye, alguien tuvo que hacerlo!

Length[DictionaryLookup[Input[]]]

Autoexplicativo.


0

Javascript ES6, 32 bytes:

Usando la expresión regular de la respuesta @ Sp3000 :

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

Esto crea una función anónima. Para usarlo, simplemente envuélvelo ().

Ejemplo:

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

Esto tiene exactamente la misma tasa de falla que @ Sp3000, y regresa trueo en falseconsecuencia.

Todos los créditos se deben a @ Sp3000 por dejarme usar su expresión regular.


@ Sp3000 Pero entonces no podrá llamarlo. Esto es lo mismo que F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Ismael Miguel

@ Sp3000 Sé que funciona, pero tienes que gastar más bytes para usarlo.
Ismael Miguel

@ Sp3000 ¡PELIGRO! A un paso de acortarlo: / Gracias por la sugerencia. Lo he actualizado.
Ismael Miguel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.