Czy to w ogóle słowo?


54

Powinieneś napisać program lub funkcję, która pobiera 4-znakowy ciąg jako dane wejściowe i wyświetla wartość wskazującą, czy ciąg jest słowem angielskim, czy nie. Możesz popełniać błędy w 15% podanych przypadków testowych.

Dane wejściowe:

Dane wejściowe to ciąg 4 znaków zawierający tylko małe litery angielskie (az).

Dane wyjściowe:

Jeśli wejście jest słowem angielskim, powinieneś wypisać wartość logiczną truelub liczbę całkowitą 1.

Jeśli dane wejściowe nie są słowem angielskim, należy wypisać wartość logiczną falselub liczbę całkowitą 0.

Listy słów

lista 4-literowych angielskich słów (2236 słów)

lista 4-literowych ciągów niepisanych (2236 ciągów)

Lista nie zawierająca słów zawiera jednolicie losowo generowane sekwencje liter z usuniętymi prawdziwymi słowami.

Testowanie

Twój program lub funkcja nie powinny razem popełniać więcej niż 15% błędów na podanych listach słów. Oznacza to, że możesz podać nieprawidłowy wynik dla 670 z 4472 dostarczonych danych wejściowych.

Powinieneś opublikować program testowy lub funkcję, aby inni mogli sprawdzić twoją odpowiedź. Długość twojego programu testowego nie wlicza się do wyniku twojego zgłoszenia.

Standardowe luki są niedozwolone.

Twój program nie powinien używać żadnych zewnętrznych źródeł, np. Dostępu do sieci lub czytania z pliku.

To jest golf golfowy, więc wygrywa najkrótszy program lub funkcja.


4
Ta tablica musi być częścią kodu. (Zgaduję). @randomra - nie przejmuj się, że nie możesz odczytać / uzyskać dostępu do listy słów z dowolnego miejsca ..
Optymalizator

3
@BryanDevaney powinieneś tylko kodować na stałe 85% listy
dwana

1
@TeunPronk Tak.
randomra

2
@Sparr Są jeszcze inne sposoby rozwiązania problemu, na przykład w tym pytaniu
Sp3000,

5
„Czy to w ogóle słowo?” Tak. [<- 4 znaki]
chucksmash

Odpowiedzi:


62

Rubinowy, 29 bajtów

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

Mam nadzieję, że mam rację - to mój pierwszy program w Ruby. Właściwie wszystkie testy przeprowadziłem w Pythonie, ale import rebyło to dla mnie zdecydowanie za długo.

Jest to anonimowa funkcja, która pobiera ciąg znaków i true/falseodpowiednio wyświetla dane wyjściowe . Używa wyrażenia regularnego, który szuka jednej z dwóch następujących rzeczy:

  • Trzy spółgłosek z rzędu
  • Zawiera jeden z jqxz

Jeśli którykolwiek z nich jest obecny, klasyfikujemy dane wejściowe jako nie słowo.

Funkcja dopasowuje 2030 słów (niepoprawnie zawodzi w 206) i zawodzi w 1782 nie-słowach (niepoprawnie dopasowuje 454), co daje w sumie 660 błędnych klasyfikacji. Testowany na ideonie .

Dzięki @ MartinBüttner za pomoc Ruby. Martin wskazuje również, że pełny program zajmuje tę samą liczbę bajtów:

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

Również dzięki user20150203 za uproszczenie wyrażenia regularnego.


Rubin, 1586 1488 1349 1288 1203 bajtów

Aby uzyskać bonus, oto funkcja o znacznie dłuższym wyrażeniu regularnym:

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

Chciałem pokazać, że wyrażenie regularne wciąż może pokonać kompresję, więc ten poprawnie klasyfikuje każdy podany przypadek . Sam regex jest trochę jak rozkład wykładniczy - pierwsze bity pasują do wielu nie-słów, a następnie co jakiś czas dopasowuje coraz mniej, aż się poddałem i po prostu połączyłem resztę (około 200) na końcu. Niektóre z tych, które pozostały, wyglądały zaskakująco jak prawdziwe słowa (takie jak chiaktóre to słowo).

Rzuciłem regex w mój regex do czyszczenia golfa, który napisałem na kolejne wyzwanie - grał w golfa około 300 bajtów, zanim musiałem spróbować przetasować rzeczy ręcznie. Jest jeszcze sporo do gry w golfa.


1
user20150203 (brak przedstawiciela do komentowania) zasugerował następującą edycję, którą odrzuciłem na podstawie tej dyskusji : „Edycja przez nowego użytkownika bez reputacji: ->s{!s[/[^aeiou]{3}|[jqxz]/]}ma tylko 29 bajtów i dopasowuje 2030 słów (niepoprawnie zawodzi w 206) i kończy się niepowodzeniem w 1782 - słowa (niepoprawnie pasujące 454), w sumie 660 błędnych klasyfikacji. ”
Martin Ender

To dziwne, myślałem, że testowałem usunięcie każdego znaku - musiałem o tym zapomnieć v. Dzięki użytkownik20150203!
Sp3000,

@ Sp3000 Czy udzielasz mi zgody na użycie wyrażenia regularnego w odpowiedzi dla mnie? Uznam ci reputację (jeśli to możliwe), a wszystkie kredyty zostaną wskazane w odpowiedzi.
Ismael Miguel

@ IsmaelMiguel Czy to tylko język, w którym napisanie funkcji dopasowania regularnego jest znacznie krótsze? Jeśli tak, to przyznaję, że jestem trochę ciekawy ... (abym mógł go ukraść następnym razem!)
Sp3000,

@ Sp3000 Nie jest krótszy. Ale ja po prostu chcę coś opublikować. Od dawna nic tu nie opublikowałem. I trochę poszerzy moją wiedzę. To dla mnie sytuacja korzystna dla obu stron. I dam ci trochę reputacji, jeśli to możliwe, więc to także wygrana dla ciebie (być może).
Ismael Miguel

13

Groovy, 77 74

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

Napisałem program testowy w Javie, który można znaleźć w tej Gist na Github. Oto wynik mojego programu testowego:

Good: 2135 1708
Bad: 101 528

(Nieudane 629 przypadków testowych)

PS Myślę, że niedługo skończy się problem golfa regularnego ...

Jeśli odpowiedź Sp3000 (funkcja) ma zostać przekonwertowana na Groovy, skończy się na tej samej liczbie znaków. Jako funkcja o nazwie:

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

lub funkcja bez nazwy:

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

może zawieść tylko 335 przypadków;), ale wciąż całkiem fajnie
Teun Pronk

wydaje się to bardzo złe, ale działa ^^
dwana

@TeunPronk: (2236 + 2236) * 0,15 = 670,8. żebyś mógł nie zdać 670. Myślę, że zapomniałeś o poprawnym zaklasyfikowaniu nie-słów. „Twój program lub funkcja powinna nie więcej niż 15% błędów na dany wyraz wymienia razem .” (moje podkreślenie)
Neil Slater,

@ NeilSlater Aah, tak, uważałem tylko te poprawne. My bad ^^
Teun Pronk

9

JavaScript, 1626 bajtów:

Chciałem znaleźć rozwiązanie, które dla każdej postaci ma wskazówkę, po której można się zdecydować. Nie tak krótko, ale bez wyrażenia regularnego i dość dobry wynik (słowa: 101 błędów, brak słów, 228 błędów)

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}

Oto działająca implementacja http://fiddle.jshell.net/jc73sjyn/

W skrócie: Obiekt g przechowuje znaki od a do z (jako klucze), a dla każdego z nich istnieje zestaw znaków (także jako klucze), z których każdy reprezentuje znak, który może nastąpić, wraz z procentem prawdopodobieństwa . Tam, gdzie nie ma obiektu, nie ma prawdopodobieństwa.

3 wyniki (4 litery -> 3 oceny) są mnożone, a słowo o wyniku 60 i więcej jest uważane za prawdziwe słowo.

Przykład: dla słowa „poradzić sobie” istnieją trzy wyszukiwania:

g [c] [o] = 20

g [o] [p] = 5

g [p] [e] = 20

wynik = 20 * 5 * 20 = 2000, czyli więcej niż 60, więc jeden jest ważny.

(Jestem całkiem nowy w javascript, więc mogą istnieć sposoby skrócenia tego, o czym nie wiem).

PÓŹNA EDYCJA:

Do tej pory zupełnie nieistotne, ale oceniłem swoją drogę do bardziej poprawnego g:

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

Nowe wyniki:

słowa: 53 błędy, brak słów: 159 błędów

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


Powinienem dodać, że liczby zostały znalezione poprzez ocenę 2236 poprawnych słów. Dla każdej litery po prostu obliczyłem zaokrąglony procent każdego następcy. Zastanawiałem się nad zrobieniem tego samego w przypadku niewłaściwych słów i jakoś je odjąć, ale myślę, że dzięki temu ocena byłaby mniej sprytna i bardziej korzystałaby z ograniczonego zestawu niewłaściwych słów.
Henrik Christensen

2
Udało mi się zredukować Twój kod tak bardzo, jak tylko mogłem. Zjadłem około 80 bajtów. Niewiele, ale jest mniejszy. Oto kod: pastebin.com/fkPW0D92 . Zamieniłem WSZYSTKIE liczby, które zostały powtórzone więcej niż 3 razy i nadal usunąłem wiele wzdęć z forpętli.
Ismael Miguel

Zapomniałem wspomnieć: działa tylko na konsoli Firefox / Firebug. Wykorzystuje to nową notację wielkiej strzałki ES6 do tworzenia funkcji. Można zastąpić w=>przez function(w)i będzie działać na każdej przeglądarce.
Ismael Miguel

6

Python 2, 5254 bajtów

To rozwiązanie dzieli dobre słowa na dwie połowy. Wyszukiwanie najpierw sprawdza pierwsze 2 znaki, aby znaleźć odpowiedni ciąg, a następnie szuka drugich 2 znaków w tym ciągu. Niezbyt kompaktowy, ale szybki do napisania. Ta metoda dopasowuje każde słowo bez błędów.

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

Krótszy

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

Stara odpowiedź

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
Czy to zajmuje domyślne ustawienia regionalne? :)
RobAu,

@RobAu Nie jestem pewien, pierwszy raz go użyłem.
bacchusbeale

Możesz go nieco skrócić, używając vari nie wprowadzając zmiennych, chyba że jest to konieczne.
lesderid

3

Słowo VBA, 25 bajtów

Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane wejściowe jako bieżący wybór i wyprowadza, jeśli jest to słowo typu boolean w bezpośrednim oknie VBE.

?CheckSpelling(Selection)

Funkcja testera

Poniższa funkcja została użyta do przetestowania powyższej funkcji w stosunku do przypadków testowych. Funkcja zawiodła 9,07 procent przypadków (396 rzeczywistych słów i 10 fałszywych słów)

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

2

Mathematica, 33 bajty

Hej, ktoś musiał to zrobić!

Length[DictionaryLookup[Input[]]]

Nie wymaga wyjaśnienia.


0

JavaScript ES6, 32 bajty:

Za pomocą wyrażenia regularnego z @ Sp3000 odpowiedź :

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

To tworzy anonimową funkcję. Aby go użyć, wystarczy go owinąć ().

Przykład:

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

Ma dokładnie taką samą awaryjność jak @ Sp3000 i zwraca truelub falseodpowiednio.

Wszystkie kredyty należne @ Sp3000 za umożliwienie mi użycia jego wyrażenia regularnego.


@ Sp3000 Ale wtedy nie będziesz mógł tego nazwać. To jest to samo co F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Ismael Miguel

@ Sp3000 Wiem, że to działa, ale musisz wydać więcej bajtów, aby z niego skorzystać.
Ismael Miguel

@ Sp3000 DANG it! O krok od skrócenia: / Dzięki za wskazówkę. Zaktualizowałem to.
Ismael Miguel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.