Ist das überhaupt ein Wort?

54

Sie sollten ein Programm oder eine Funktion schreiben, die eine 4-stellige Zeichenfolge als Eingabe verwendet und einen Wert ausgibt, der angibt, ob die Zeichenfolge ein englisches Wort ist oder nicht. Sie dürfen in 15% der bereitgestellten Testfälle Fehler machen.

Eingabedetails:

Die Eingabe ist eine 4-stellige Zeichenfolge, die nur die englischen Kleinbuchstaben (az) enthält.

Ausgabedetails:

Ist der Eingang ist ein englisches Wort , sollten Sie die Ausgabe ein boolean trueoder eine ganze Zahl 1.

Wenn die Eingabe kein englisches Wort ist, sollten Sie einen Booleschen Wert falseoder eine Ganzzahl ausgeben 0.

Wortlisten

Liste der englischen Wörter mit 4 Buchstaben (2236 Wörter)

Liste von 4-Buchstaben-Zeichenfolgen (2236 Zeichenfolgen)

Die Nicht-Wortliste enthält einheitlich zufällig erzeugte Buchstabenfolgen, aus denen die realen Wörter entfernt wurden.

Testen

Ihr Programm oder Ihre Funktion sollte nicht mehr als 15% Fehler in den angegebenen Wortlisten zusammen machen. Dies bedeutet, dass Sie für 670 der 4472 bereitgestellten Eingänge eine falsche Ausgabe angeben können.

Sie sollten das Testprogramm oder die Funktion auch posten, damit andere Ihre Antwort überprüfen können. Die Länge Ihres Testprogramms fließt nicht in Ihre Einreichungsbewertung ein.

Standardlücken sind nicht zulässig.

Ihr Programm sollte keine externen Quellen verwenden, z. B. Zugriff auf das Internet oder Lesen aus einer Datei.

Dies ist Code-Golf, also gewinnt das kürzeste Programm oder die kürzeste Funktion.

randomra
quelle
4
Dieses Array muss Teil des Codes sein. (Ich vermute). @ Randomra - Pflege erwähnen, dass Sie nicht lesen / Zugriff auf die Wortliste von überall ..
Optimierer
3
@BryanDevaney Sie sollten nur 85% der Liste hart codieren
Dwana
1
@TeunPronk Ja.
Randomra
2
@Sparr Es gibt noch andere Möglichkeiten, um das Problem zu lösen, wie in dieser Frage
Sp3000
5
"Ist das überhaupt ein Wort?" Ja. [<- 4 Zeichen]
Chucksmash

Antworten:

62

Ruby, 29 Bytes

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

Hoffentlich habe ich das richtig verstanden - ich programmiere zum ersten Mal in Ruby. Ich habe eigentlich alle meine Tests in Python durchgeführt, war aber import reviel zu lang für mich.

Dies ist eine anonyme Funktion, die eine Zeichenfolge aufnimmt und entsprechend ausgibt true/false. Es wird ein regulärer Ausdruck verwendet, der nach einem der folgenden zwei Dinge sucht:

  • Drei Konsonanten hintereinander
  • Enthält eines von jqxz

Wenn eine von diesen vorhanden ist, klassifizieren wir die Eingabe als kein Wort.

Die Funktion entspricht 2030 Wörtern (206 fälschlicherweise fehlgeschlagen) und 1782 Nichtwörtern (454 fälschlicherweise fehlgeschlagen), was insgesamt 660 Fehlklassifizierungen ergibt. Auf ideone getestet .

Danke an @ MartinBüttner für die Ruby-Hilfe. Martin weist auch darauf hin, dass ein vollständiges Programm die gleiche Anzahl von Bytes benötigt:

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

Danke auch an user20150203 für die Vereinfachung der Regex.


Ruby, 1586, 1488, 1349, 1288, 1203 Bytes

Als Bonus gibt es hier eine Funktion mit einem viel längeren regulären Ausdruck:

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

Ich wollte zeigen, dass Regex die Komprimierung immer noch übertreffen kann, daher klassifiziert dieser Fall jeden einzelnen Fall korrekt . Die Regex selbst ist ein bisschen wie der exponentielle Zerfall - die ersten Bits stimmen mit vielen Nicht-Wörtern überein, dann stimmt jedes Bit nacheinander immer weniger überein, bis ich aufgab und den Rest (ungefähr 200) am Ende verkettete. Einige von denen , die übrig waren sahen überraschend wie echte Worte (wie chiadie ist ein Wort).

Ich habe den Regex auf meinen Regex-Golfreiniger geworfen, den ich für eine andere Herausforderung geschrieben habe - er hat ungefähr 300 Bytes lang gespielt, bevor ich versuchen musste, die Dinge manuell zu mischen. Es gibt aber noch einiges zu golfen.

Sp3000
quelle
1
user20150203 (ohne die Wiederholung zum Kommentieren) schlug in einer Bearbeitung, die ich aufgrund dieser Diskussion ablehnte, Folgendes vor : "Bearbeitung durch einen neuen Benutzer ohne Ansehen: ->s{!s[/[^aeiou]{3}|[jqxz]/]}Hat nur 29 Bytes und passt zu 2030 Wörtern (fälschlicherweise fehlgeschlagen auf 206) und schlägt fehl auf 1782 nicht -Wörter (die falsch mit 454 übereinstimmen) für insgesamt 660 Fehlklassifizierungen. "
Martin Ender
Das ist seltsam, ich dachte, ich hätte getestet, wie ich jeden Buchstaben entferne - muss es vergessen haben v. Danke user20150203!
Sp3000,
@ Sp3000 Erteilen Sie mir die Berechtigung, Ihre Regex in einer Antwort für mich zu verwenden? Ich werde Ihnen den Ruf gutschreiben (wenn möglich) und in der Antwort auf alle Kredite hinweisen.
Ismael Miguel
@IsmaelMiguel Ist es nur eine Sprache, in der es viel kürzer ist, eine Funktion für ein Regex-Match zu schreiben? Wenn ja, gebe ich zu, dass ich ein bisschen neugierig bin ... (damit ich es für das nächste Mal stehlen kann!)
Sp3000
@ Sp3000 Es ist nicht kürzer. Aber ich möchte nur etwas posten. Es ist schon lange her, dass ich hier sowieso irgendetwas gepostet habe. Und es wird mein Wissen ein wenig erweitern. Es ist also eine Win-Win-Situation für mich. Und ich werde dir, wenn möglich, einen gewissen Ruf einräumen, also ist es auch ein Gewinn für dich (möglicherweise).
Ismael Miguel
13

Groovy, 77 74

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

Ich habe das Testprogramm in Java geschrieben, das Sie in diesem Gist on Github finden. Hier ist die Ausgabe meines Testprogramms:

Good: 2135 1708
Bad: 101 528

(629 Testfälle fehlgeschlagen)

PS: Ich denke, das wird sehr bald zu einem Problem mit dem regulären Golfspiel führen ...

Wenn die Antwort von Sp3000 (die Funktion) in Groovy konvertiert werden soll, wird dieselbe Zeichenanzahl verwendet. Als benannte Funktion:

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

oder unbenannte Funktion:

{i->i!=~/[^aeiou]{3}|[jqxz]/}
n̴̖̋h̴̖̋ã̷͉h̷̭̿d̷̰̀ĥ̷̳
quelle
es kann nur 335 Fälle scheitern;) aber immer noch ziemlich ordentlich
Teun Pronk
das fühlt sich so falsch an, aber es funktioniert ^^
Dwana
@TeunPronk: (2236 + 2236) * 0,15 = 670,8. Sie können also 670 scheitern. Ich glaube, Sie haben vergessen, die Nichtwörter richtig zu klassifizieren. "Ihr Programm oder Ihre Funktion sollte nicht mehr als 15% Fehler in den angegebenen Wortlisten zusammen machen ." (Hervorhebung meiner)
Neil Slater
@NeilSlater Aah, Yup, ich habe nur die richtigen in Betracht gezogen. Mein schlechtes ^^
Teun Pronk
9

Javascript, 1626 Bytes:

Ich wollte nach einer Lösung suchen, die für jeden Charakter eine Ahnung hat, nach welcher man suchen könnte. Nicht so kurz, aber kein Regex und ein ziemlich gutes Ergebnis (Wörter: 101 Fehler, Nicht-Wörter, 228 Fehler)

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}

Hier ist eine funktionierende Implementierung: http://fiddle.jshell.net/jc73sjyn/

Kurz gesagt: Das Objekt g enthält die Zeichen von a bis z (als Schlüssel), und für jedes von ihnen gibt es eine Reihe von Zeichen (auch als Schlüssel), die jeweils ein eventuell nachfolgendes Zeichen zusammen mit seinem Wahrscheinlichkeitsprozentsatz darstellen . Wo kein Objekt existiert, gibt es keine Wahrscheinlichkeit.

Die 3 Bewertungen (4 Buchstaben -> 3 Bewertungen) werden multipliziert, und ein Wort mit einer Bewertung von 60 und höher wird als echtes Wort betrachtet.

Beispiel: Für das Wort 'Cope' gibt es drei Suchvorgänge:

g [c] [o] = 20

g [o] [p] = 5

g [p] [e] = 20

score = 20 * 5 * 20 = 2000, was mehr als 60 ist, so dass einer gültig ist.

(Ich bin ziemlich neu mit Javascript, daher gibt es möglicherweise Möglichkeiten, es kürzer zu machen, von denen ich nichts weiß.)

LATE EDIT:

Völlig irrelevant, aber ich habe meinen Weg zu einem korrekteren g bewertet:

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

Neue Ergebnisse:

Wörter: 53 Fehler, Nichtwörter: 159 Fehler

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

Henrik Christensen
quelle
Ich sollte hinzufügen, dass die Zahlen durch Auswertung der 2236 richtigen Wörter gefunden wurden. Für jeden Buchstaben würde ich einfach den gerundeten Prozentsatz jedes Nachfolgers berechnen. Ich dachte darüber nach, dasselbe für die falschen Wörter zu tun und sie irgendwie zu subtrahieren, aber ich denke, das würde die Bewertung weniger schlau machen und den begrenzten Satz falscher Wörter besser ausnutzen.
Henrik Christensen
2
Ich habe es geschafft, Ihren Code so weit wie möglich zu reduzieren. Ich habe ungefähr 80 Bytes gegessen. Nicht viel, aber es ist kleiner. Hier ist der Code: pastebin.com/fkPW0D92 . Ich habe ALLE Zahlen ersetzt, die mehr als dreimal wiederholt wurden und trotzdem viel Aufblähung von Ihrer forSchleife entfernt haben.
Ismael Miguel
Ich habe vergessen zu erwähnen: es funktioniert nur auf der Firefox / Firebug-Konsole. Dies verwendet die neue ES6-Großpfeilnotation, um Funktionen zu erstellen. Sie können ersetzen w=>durch , function(w)und es wird für jeden Browser arbeiten.
Ismael Miguel
6

Python 2, 5254 Bytes

Diese Lösung trennt die guten Wörter in zwei Hälften. Die Suche überprüft zuerst die ersten 2 Zeichen, um die richtige Zeichenfolge zu finden, und sucht dann nach den zweiten 2 Zeichen in dieser Zeichenfolge. Nicht sehr kompakt, aber schnell zu schreiben. Diese Methode passt zu jedem Wort ohne Fehler.

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)]
Logik-Ritter
quelle
5

C # WPF, 110 139

Kürzer

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

Alte Antwort

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
quelle
1
Nimmt es das Standardgebietsschema an? :)
RobAu
@RobAu Ich bin mir nicht sicher, wann ich es zum ersten Mal benutzt habe.
Bacchusbeale
Sie können es etwas kürzer machen, indem Sie varVariablen verwenden und nicht einführen, es sei denn, dies ist erforderlich.
Lesderid
3

Word VBA, 25 Bytes

Anonyme VBE-Direktfensterfunktion, die Eingaben als aktuelle Auswahl annimmt und ausgibt, wenn es sich um ein Wort handelt, das für das VBE-Direktfenster boolesch ist.

?CheckSpelling(Selection)

Testerfunktion

Die folgende Funktion wurde verwendet, um die obige Funktion gegen die Testfälle zu testen. Die Funktion schlug in 9,07 Prozent der Fälle fehl (396 der tatsächlichen Wörter und 10 der gefälschten Wörter)

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

Mathematica, 33 Bytes

Hey, jemand musste es tun!

Length[DictionaryLookup[Input[]]]

Selbsterklärend.

Hipe99
quelle
0

Javascript ES6, 32 Bytes:

Verwenden Sie die Regex von @ Sp3000 Antwort :

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

Dadurch wird eine anonyme Funktion erstellt. Um es zu benutzen, wickelst du es einfach um ().

Beispiel:

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

Dies hat genau die gleiche Fehlerrate wie @ Sp3000 und gibt trueoder falsedementsprechend zurück.

Alles Dank an @ Sp3000, dass ich seine Regex verwenden durfte.

Ismael Miguel
quelle
@ Sp3000 Aber dann kannst du es nicht nennen. Dies ist das gleiche wie F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Ismael Miguel
@ Sp3000 Ich weiß, dass es funktioniert, aber Sie müssen mehr Bytes ausgeben , um es zu verwenden.
Ismael Miguel
@ Sp3000 DANG it! Ein Schritt davon entfernt, es zu verkürzen: / Danke für den Tipp. Ich habe es aktualisiert.
Ismael Miguel