Isso é mesmo uma palavra?

54

Você deve escrever um programa ou função que use uma string de 4 caracteres como entrada e produza um valor indicando se a string é uma palavra em inglês ou não. Você pode cometer erros em 15% dos casos de teste fornecidos.

Detalhes da entrada:

Entrada é uma cadeia de quatro caracteres que contém apenas as letras em inglês em minúsculas (az).

Detalhes da saída:

Se a entrada for uma palavra em inglês, você deve gerar um booleano trueou um número inteiro 1.

Se a entrada não for uma palavra em inglês, você deve gerar um booleano falseou um número inteiro 0.

Listas de palavras

lista de palavras em inglês de 4 letras (2236 palavras)

lista de cadeias de caracteres sem palavras de 4 letras (2236 cadeias)

A lista de não palavras contém seqüências de letras uniformemente geradas aleatoriamente com as palavras reais removidas delas.

Testando

Seu programa ou função não deve cometer mais de 15% de erros nas listas de palavras fornecidas juntas. Isso significa que você pode fornecer uma saída incorreta para 670 das 4472 entradas fornecidas.

Você deve postar o programa ou a função de teste também para que outras pessoas possam verificar sua resposta. A duração do seu programa de testes não conta na sua pontuação de envios.

As brechas padrão não são permitidas.

Seu programa não deve usar fontes externas, por exemplo, acessar a Web ou ler arquivos.

Isso é código-golfe, portanto o programa ou função mais curto vence.

randomra
fonte
4
Essa matriz deve fazer parte do código. (Eu acho). @randomra - cuidados de mencionar que você não pode ler / acesso a lista de palavras a partir de qualquer lugar ..
Optimizer
3
@BryanDevaney você deve somente código rígido de 85% da lista
Dwana
11
@TeunPronk Sim.
Aleatório
2
@Sparr Ainda há outras maneiras de fazer o problema, como em esta pergunta
SP3000
5
isso mesmo uma palavra?" Sim. [<- 4 caracteres]
chucksmash

Respostas:

62

Ruby, 29 bytes

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

Espero que eu tenha entendido direito - é minha primeira vez em programação em Ruby. Na verdade, eu fiz todos os meus testes em Python, mas import refoi muito longo para mim.

Esta é uma função anônima que recebe uma string e gera as saídas de true/falseacordo. Ele usa uma regex que procura uma das duas coisas a seguir:

  • Três consoantes seguidas
  • Contém um jqxz

Se um deles estiver presente, classificamos a entrada como não uma palavra.

A função corresponde a 2030 palavras (falha incorreta em 206) e falha em 1782 não palavras (correspondência incorreta em 454), para um total de 660 classificações incorretas. Testado em ideone .

Obrigado a @ MartinBüttner pela ajuda do Ruby. Martin também aponta que um programa completo ocupa o mesmo número de bytes:

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

Também obrigado a user20150203 por simplificar o regex.


Ruby, 1586 1488 1349 1288 1203 bytes

Para um bônus, aqui está uma função com uma regex muito mais longa:

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

Eu queria mostrar que o regex ainda pode superar a compactação, portanto este classifica todos os casos corretamente . O regex em si é um pouco como decaimento exponencial - os primeiros bits correspondem a muitas não-palavras, depois a cada bit corresponde menos e menos até que eu desisti e concatenou o restante (cerca de 200) no final. Alguns dos que ficaram pareciam surpreendentemente com palavras reais (como chiaqual é uma palavra).

Joguei o regex no meu limpador de golfe regex, que escrevi para outro desafio - ele jogava cerca de 300 bytes antes de tentar embaralhar as coisas manualmente. Ainda há um bocado justo para jogar golfe.

Sp3000
fonte
11
user20150203 (sem o representante para comentar) sugeriu o seguinte em uma edição que eu rejeitei com base nesta discussão : "Editar por um novo usuário sem reputação: ->s{!s[/[^aeiou]{3}|[jqxz]/]}possui apenas 29 bytes e corresponde a 2030 palavras (falha incorreta em 206) e falha em 1782 não -words (correspondendo incorretamente a 454), para um total de 660 classificações incorretas. "
Martin Ender
Isso é estranho, pensei ter testado remover cada caractere - deve ter esquecido v. Obrigado user20150203!
Sp3000
@ Sp3000 Você me concede autorização para usar seu regex em uma resposta para mim? Vou creditar sua reputação (se possível) e todos os créditos serão apontados na resposta.
Ismael Miguel
@IsmaelMiguel É apenas um idioma em que é muito mais curto escrever uma função para uma correspondência de regex? Se assim for eu admitir que estou um pouco curioso ... (para que eu possa roubá-lo para a próxima vez!)
SP3000
@ Sp3000 Não é mais curto. Mas eu só quero postar alguma coisa. Faz muito tempo desde que eu postei alguma coisa aqui de qualquer maneira. E isso expandirá um pouco meu conhecimento. Então, é uma situação em que todos saem ganhando. E vou lhe conceder alguma reputação, se possível, então é uma vitória para você também (possivelmente).
Ismael Miguel
13

Groovy, 77 74

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

Eu escrevi o programa de teste em Java, que você pode encontrar neste Gist no Github. Aqui está a saída do meu programa de teste:

Good: 2135 1708
Bad: 101 528

(Falha em 629 casos de teste)

PS Acho que isso vai acabar com um problema de golfe regular em breve ...

Se a resposta do Sp3000 (a função) for convertida para Groovy, ela terminará com a mesma contagem de caracteres. Como função nomeada:

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

ou função sem nome:

{i->i!=~/[^aeiou]{3}|[jqxz]/}
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
fonte
ele só pode deixar 335 casos;), mas ainda muito arrumado embora
Teun Pronk
isso parece tão errado, ainda assim funciona ^^ #
314 dwana
@TeunPronk: (2236 + 2236) * 0,15 = 670,8. para que você possa falhar 670. Acho que você esqueceu de classificar as não palavras corretamente. "Seu programa ou função não deve cometer mais de 15% de erros nas listas de palavras fornecidas juntas ." (ênfase minha)
Neil Slater
@ NeilSlater Aah, Sim, eu apenas considerei os corretos. Meu bad ^^
Teun Pronk
9

Javascript, 1626 bytes:

Eu queria ir para uma solução que, para cada personagem, tivesse uma pista de qual deles poderia vir depois. Não é tão curto, mas não regex e um resultado bastante bom (palavras: 101 erros, não palavras, 228 erros)

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}

Aqui está uma implementação funcional http://fiddle.jshell.net/jc73sjyn/

Em resumo: o Objeto g contém os caracteres de a a z (como chaves) e, para cada um deles, existe um conjunto de caracteres (também como chaves), cada um representando um caractere que pode vir depois, juntamente com sua porcentagem de probabilidade . Onde não há objeto, não há probabilidade.

As 3 pontuações (4 letras -> 3 avaliações) são multiplicadas, e uma palavra com pontuação igual ou superior a 60 é considerada uma palavra real.

Exemplo: para a palavra 'lidar', existem três pesquisas:

g [c] [o] = 20

g [o] [p] = 5

g [p] [e] = 20

score = 20 * 5 * 20 = 2000, que é mais de 60, para que um seja válido.

(Eu sou bastante novo com javascript, então pode haver maneiras de torná-lo mais curto que eu não conheço.)

EDIÇÃO ATUAL:

Completamente irrelevante até agora, mas avaliei meu caminho para um g mais correto:

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

Novos resultados:

palavras: 53 erros, não-palavras: 159 erros

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

Henrik Christensen
fonte
Devo acrescentar que os números foram encontrados através da avaliação das 2236 palavras corretas. Para cada letra, eu simplesmente calculava a porcentagem arredondada de cada sucessor. Pensei em fazer o mesmo com as palavras erradas e subtraí-las de alguma forma, mas acho que isso tornaria a avaliação menos inteligente e mais aproveitando o conjunto limitado de palavras erradas.
Henrik Christensen
2
Consegui reduzir o seu código o máximo que pude. Eu comi cerca de 80 bytes. Não muito, mas é menor. Aqui está o código: pastebin.com/fkPW0D92 . Substituí TODOS os números que foram repetidos mais de 3 vezes e ainda removi muito inchaço do seu forloop.
Ismael Miguel
Esqueci de mencionar: ele funciona apenas no console Firefox / Firebug. Isso usa a nova notação de seta grande ES6 para criar funções. Você pode substituir w=>por function(w)e funcionará para todos os navegadores.
Ismael Miguel
6

Python 2, 5254 bytes

Esta solução separa as boas palavras em duas metades. A pesquisa verifica primeiro os 2 primeiros caracteres para encontrar a sequência correta e, em seguida, procura os 2 caracteres seguintes nessa sequência. Não é muito compacto, mas rápido de escrever. Este método corresponde a cada palavra sem erros.

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)]
Cavaleiro Lógico
fonte
5

C # WPF, 110139

Mais curta

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

Resposta antiga

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
fonte
11
É necessário o código de idioma padrão? :)
RobAu
@ RobAu Não tenho certeza, primeira vez que eu usei.
bacchusbeale
Você pode torná-lo um pouco mais curto usando vare não introduzindo variáveis, a menos que seja necessário.
Lesderid
3

Word VBA, 25 bytes

Função de janela imediata anônima do VBE que recebe entrada como a seleção atual e sai se for uma palavra como booleana para a janela imediata do VBE.

?CheckSpelling(Selection)

Função do testador

A função abaixo foi usada para testar a função acima contra os casos de teste. A função falhou 9,07% dos casos (396 das palavras reais e 10 das palavras falsas)

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

Mathematica, 33 bytes

Ei, alguém tinha que fazer isso!

Length[DictionaryLookup[Input[]]]

Auto-explicativo.

Hipe99
fonte
0

Javascript ES6, 32 bytes:

Usando a regex da resposta do @ Sp3000 :

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

Isso cria uma função anônima. Para usá-lo, basta envolvê-lo ().

Exemplo:

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

Isso tem exatamente a mesma taxa de falhas do @ Sp3000 e retorna trueou de falseacordo.

Todos os créditos devidos ao @ Sp3000 por me deixar usar o regex dele.

Ismael Miguel
fonte
@ Sp3000 Mas você não poderá chamá-lo. É o mesmo que F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Ismael Miguel
@ Sp3000 Eu sei que funciona, mas você precisa gastar mais bytes para usá-lo.
Ismael Miguel
@ Sp3000 DANG it! A um passo de reduzi-lo: / Obrigado pela dica. Eu atualizei.
Ismael Miguel