Est-ce même un mot?


54

Vous devez écrire un programme ou une fonction prenant une chaîne de 4 caractères en entrée et fournissant une valeur indiquant si la chaîne est un mot anglais ou non. Vous êtes autorisé à commettre des erreurs dans 15% des cas de test fournis.

Détails d'entrée:

L'entrée est une chaîne de 4 caractères contenant uniquement les lettres anglaises minuscules (az).

Détails de sortie:

Si l'entrée est un mot anglais, vous devez générer un booléen trueou un entier 1.

Si l'entrée n'est pas un mot anglais, vous devez indiquer un booléen falseou un entier 0.

Listes de mots

liste de mots anglais de 4 lettres (2236 mots)

liste de chaînes de 4 lettres autres que des mots (2236 chaînes)

La liste de non-mots contient des séquences de lettres générées de manière uniforme et aléatoire, sans les mots réels.

Essai

Votre programme ou fonction ne doit pas faire plus de 15% d’erreurs sur la liste de mots donnée. Cela signifie que vous pouvez donner une mauvaise sortie pour 670 des 4472 entrées fournies.

Vous devez également publier le programme ou la fonction de test afin que d’autres puissent vérifier votre réponse. La longueur de votre programme de test ne compte pas dans le score de vos soumissions.

Les failles standard sont interdites.

Votre programme ne doit utiliser aucune source externe, par exemple accéder à Internet ou lire un fichier.

C'est le code-golf donc le programme ou la fonction le plus court gagne.


4
Ce tableau doit faire partie du code. (Je suppose). @randomra - attention, vous ne pouvez pas lire / accéder à la liste de mots de n'importe où.
Optimiseur

3
@BryanDevaney vous devriez seulement coder en dur 85% de la liste
mardi

1
@TeunPronk Oui.
randomra

2
@Sparr Il y a encore d'autres façons de résoudre le problème, comme dans cette question
Sp3000

5
"Est- ce même un mot?" Oui. [<- 4 caractères]
Chucksmash

Réponses:


62

Ruby, 29 octets

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

J'espère que j'ai bien compris - c'est ma première programmation en Ruby. J'ai en fait fait tous mes tests en Python, mais ce import refut beaucoup trop long pour moi.

Il s'agit d'une fonction anonyme qui prend une chaîne et génère le résultat en true/falseconséquence. Il utilise une expression régulière qui recherche l'une des deux choses suivantes:

  • Trois consonnes consécutives
  • Contient l'un des jqxz

Si l'un ou l'autre est présent, nous classons l'entrée comme n'étant pas un mot.

La fonction correspond à 2030 mots (manquant de manière incorrecte sur 206) et échoue à 1782 mots non (correspondant à 454 de façon incorrecte), pour un total de 660 classifications erronées. Testé sur ideone .

Merci à @ MartinBüttner pour l'aide de Ruby. Martin souligne également qu'un programme complet prend le même nombre d'octets:

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

Merci également à user20150203 pour simplifier la regex.


Ruby, 1586 1488 1349 1288 1203 octets

Pour un bonus, voici une fonction avec une expression rationnelle beaucoup plus longue:

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

Je voulais montrer que regex peut toujours battre la compression, donc celle-ci classe correctement chaque cas donné . La regex elle-même est un peu comme une décroissance exponentielle - les premiers bits correspondent à beaucoup de non-mots, puis de plus en plus concordants, jusqu'à ce que j'abandonne et concatène le reste (environ 200) à la fin. Certains de ceux qui restaient ressemblaient étrangement à de vrais mots (comme chiace qui est un mot).

J'ai lancé la regex sur mon nettoyeur de golf regex que j'avais écrit pour un autre défi: il jouait au golf environ 300 octets avant de devoir essayer de remuer les choses à la main. Il y a encore pas mal de choses à jouer au golf.


1
user20150203 (sans le représentant à commenter) a suggéré ce qui suit dans une modification que j'ai rejetée en raison de cette discussion : "Modification par un nouvel utilisateur sans réputation: ->s{!s[/[^aeiou]{3}|[jqxz]/]}ne contient que 29 octets et correspond à 2030 mots (échec incorrect sur 206) et échoue sur 1782 non -words (correspondant 454 de façon incorrecte), pour un total de 660 classifications erronées. "
Martin Ender

C'est bizarre, je pensais avoir essayé de supprimer chaque personnage - je devais avoir oublié v. Merci user20150203!
Sp3000

@ Sp3000 Est-ce que vous me donnez l'autorisation d'utiliser votre regex dans une réponse pour moi? Je vous créditerai de la réputation (si possible) et tous les crédits seront indiqués dans la réponse.
Ismael Miguel

@IsmaelMiguel Est-ce juste une langue où il est beaucoup plus court d'écrire une fonction pour un match de regex? Si donc j'avoue que je suis un peu curieux ... (je peux donc le voler pour la prochaine fois!)
Sp3000

@ Sp3000 Ce n'est pas plus court. Mais je veux juste poster quelque chose. Cela fait longtemps que je n'ai rien posté ici. Et ça va élargir un peu mes connaissances. Donc, c'est une situation gagnant-gagnant pour moi. Et je vous donnerai une certaine réputation, si possible, alors c'est une victoire pour vous aussi (éventuellement).
Ismael Miguel

13

Groovy, 77 74

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

J'ai écrit le programme de test en Java, que vous pouvez trouver dans ce Gist sur Github. Voici le résultat de mon programme de test:

Good: 2135 1708
Bad: 101 528

(Échec de 629 cas de test)

PS je pense que cela va finir très vite par un problème de golf regex ...

Si la réponse de Sp3000 (la fonction) doit être convertie en Groovy, elle se retrouvera avec le même nombre de caractères. En tant que fonction nommée:

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

ou fonction non nommée:

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

il ne peut échouer que dans 335 cas;) mais quand même assez soigné
Teun Pronk le

cela semble tellement faux, et pourtant cela fonctionne ^^
mardi

@TeunPronk: (2236 + 2236) * 0,15 = 670,8. vous pouvez donc échouer en 670. Je pense que vous avez oublié de classer correctement les non-mots. "Votre programme ou fonction ne doit pas faire plus de 15% d'erreurs sur les listes de mots données ensemble ." (c'est moi qui souligne)
Neil Slater le

@ NeilSlater Aah, oui, j'ai seulement considéré les bonnes. Mon mauvais ^^
Teun Pronk

9

Javascript, 1626 octets:

Je voulais aller chercher une solution qui, pour chaque personnage, a un indice dont on pourrait suivre. Pas si court, mais pas de regex et un assez bon résultat (mots: 101 erreurs, non-mots, 228 erreurs)

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}

Voici une implémentation qui fonctionne http://fiddle.jshell.net/jc73sjyn/

En bref: l’objet g contient les caractères de a à z (en tant que clés) et, pour chacun d’entre eux, il existe un ensemble de caractères (également en tant que clés) qui représentent chacun un caractère pouvant suivre, ainsi que son pourcentage de probabilité. . Là où aucun objet n'existe, il n'y a aucune probabilité.

Les 3 scores (4 lettres -> 3 évaluations) sont multipliés, et un mot avec un score de 60 et plus est considéré comme un mot réel.

Exemple: pour le mot 'Cope', il y a trois recherches:

g [c] [o] = 20

g [o] [p] = 5

g [p] [e] = 20

score = 20 * 5 * 20 = 2000, soit plus de 60, de sorte qu'un est valide.

(Je suis assez nouveau avec javascript, donc il y a peut-être des façons de le raccourcir que je ne connais pas.)

TARD EDIT:

Complètement non pertinent maintenant, mais j’ai évalué mon chemin vers un g plus correct:

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

Nouveaux résultats:

mots: 53 erreurs, non-mots: 159 erreurs

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


Je devrais ajouter que les chiffres ont été trouvés à travers l’évaluation des 2236 mots corrects. Pour chaque lettre, je calculerais simplement le pourcentage arrondi de chaque successeur. J'ai envisagé de faire la même chose pour les mauvais mots et de les soustraire d'une manière ou d'une autre, mais je pense que cela rendrait l'évaluation moins intelligente et davantage exploitée par le nombre limité de mots incorrects.
Henrik Christensen

2
J'ai réussi à réduire votre code autant que je pouvais. J'ai mangé environ 80 octets. Pas beaucoup, mais c'est plus petit. Voici le code: pastebin.com/fkPW0D92 . J'ai remplacé TOUS les numéros qui ont été répétés plus de 3 fois et j'ai encore retiré beaucoup de ballonnements de votre forboucle.
Ismael Miguel

Oubli de mentionner: cela ne fonctionne que sur la console Firefox / Firebug. Ceci utilise la nouvelle notation grande flèche ES6 pour créer des fonctions. Vous pouvez remplacer w=>par function(w)et cela fonctionnera pour tous les navigateurs.
Ismael Miguel

6

Python 2, 5254 octets

Cette solution sépare les bons mots en deux moitiés. La recherche vérifie d'abord les 2 premiers caractères pour trouver la bonne chaîne, puis recherche les 2 derniers caractères de cette chaîne. Pas très compact, mais rapide à écrire. Cette méthode correspond à chaque mot sans erreur.

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

Plus court

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

Ancienne réponse

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
Prend-il les paramètres régionaux par défaut? :)
RobAu

@RobAu Pas sûr, la première fois que je l'ai utilisé.
bacchusbeale

Vous pourriez le rendre un peu plus court en utilisant varet en n'introduisant pas de variables sauf si nécessaire.
Lesderid

3

Word VBA, 25 octets

Fonction de fenêtre immédiate VBE anonyme qui prend en entrée la sélection en cours et émet s'il s'agit d'un mot booléen dans la fenêtre immédiate de VBE.

?CheckSpelling(Selection)

Fonction testeur

La fonction ci-dessous a été utilisée pour tester la fonction ci-dessus par rapport aux cas de test. La fonction a échoué dans 9,07% des cas (396 mots réels et 10 mots fictifs).

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

2

Mathematica, 33 octets

Hé, quelqu'un devait le faire!

Length[DictionaryLookup[Input[]]]

Auto-explicatif.


0

Javascript ES6, 32 octets:

En utilisant l'expression régulière de @ Sp3000, répondez :

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

Cela crée une fonction anonyme. Pour l'utiliser, il vous suffit de l'envelopper ().

Exemple:

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

Cela a exactement le même taux d'échec que @ Sp3000 et renvoie trueou en falseconséquence.

Tous les crédits dus à @ Sp3000 pour m'avoir permis d'utiliser ses regex.


@ Sp3000 Mais alors vous ne pourrez pas l'appeler. C'est la même chose que F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Ismael Miguel

@ Sp3000 Je sais que cela fonctionne, mais vous devez dépenser plus d' octets pour l'utiliser.
Ismael Miguel

@ Sp3000 DANG il! À deux pas de le raccourcir: / Merci pour le tuyau. Je l'ai mis à jour.
Ismael Miguel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.