Это даже слово?


54

Вы должны написать программу или функцию, которая принимает 4-символьную строку в качестве входных данных и выводит значение, указывающее, является ли строка английским словом или нет. Вам разрешено делать ошибки в 15% предоставленных тестовых случаев.

Детали ввода:

Ввод - это 4-символьная строка, содержащая только строчные латинские буквы (az).

Выходные данные:

Если ввод является английским словом, вы должны вывести логическое trueили целое число 1.

Если ввод не является английским словом, вы должны вывести логическое falseили целое число 0.

Списки слов

список 4-х буквенных английских слов (2236 слов)

список 4-х буквенных словесных строк (2236 строк)

Список, состоящий не из слов, содержит последовательно сгенерированные случайным образом последовательности букв с удаленными из них реальными словами.

тестирование

Ваша программа или функция должны делать не более 15% ошибок в заданных списках слов вместе. Это означает, что вы можете дать неправильный вывод для 670 из 4472 предоставленных входов.

Вы также должны опубликовать программу тестирования или функцию, чтобы другие могли проверить ваш ответ. Длина вашей тестовой программы не учитывается при подсчете результатов.

Стандартные лазейки запрещены.

Ваша программа не должна использовать какие-либо внешние источники, например, доступ к сети или чтение из файла.

Это код-гольф, поэтому выигрывает самая короткая программа или функция.


4
Этот массив должен быть частью кода. (Я полагаю). @randomra - не забывайте упоминать, что вы не можете читать / получать доступ к списку слов из любого места ..
Оптимизатор

3
@BryanDevaney Вы должны только жестко кодировать 85% списка
dwana

1
@TeunPronk Да.
Рандомра

2
@Sparr Есть еще другие способы решения проблемы, как в этом вопросе
Sp3000

5
«Является ли это даже слово?» Да. [<- 4
символа

Ответы:


62

Рубин, 29 байт

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

Надеюсь, я правильно понял - это мой первый раз программирование на Ruby. Я фактически делал все свои тесты на Python, но это import reбыло слишком долго для меня.

Это анонимная функция, которая принимает строку и выводит true/falseсоответственно. Он использует регулярное выражение, которое ищет одну из следующих двух вещей:

  • Три согласных подряд
  • Содержит один из jqxz

Если какой-либо из них присутствует, мы классифицируем ввод как не слово.

Функция сопоставляет 2030 слов (неправильно с ошибкой на 206) и сбоем на 1782 несловах (неправильно совпадает с 454), в общей сложности 660 ошибочных классификаций. Проверено на идеоне .

Спасибо @ MartinBüttner за помощь по Ruby. Мартин также указывает, что полная программа занимает столько же байтов:

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

Также спасибо user20150203 за упрощение регулярных выражений.


Рубин, 1586 1488 1349 1288 1203 байта

Для бонуса, вот функция с гораздо более длинным регулярным выражением:

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

Я хотел показать, что регулярное выражение все еще может превзойти сжатие, поэтому этот класс правильно классифицирует каждый данный случай . Само регулярное выражение немного похоже на экспоненциальный спад - первые биты соответствуют большому количеству не-слов, затем каждый бит после совпадений становится все меньше и меньше, пока я не сдался и не конкатенировал остальные (около 200 или около того) в конце. Некоторые из тех , которые были слева выглядели удивительно , как настоящие слова (например, chiaкоторая является слово).

Я бросил регулярное выражение в мой очиститель гольфа для регулярных выражений, который я написал для другой задачи - он занял около 300 байт, прежде чем мне пришлось пытаться перемешивать вещи вручную. Хотя все еще есть немало возможностей для игры в гольф.


1
user20150203 (не хватает представителя для комментариев) предложил следующее в правке, которую я отклонил на основании этого обсуждения : «Редактирование новым пользователем без репутации: ->s{!s[/[^aeiou]{3}|[jqxz]/]}имеет только 29 байтов и соответствует 2030 словам (неправильно с ошибкой на 206) и не на 1782 не -слов (неправильно соответствует 454), в общей сложности 660 ошибочных классификаций. "
Мартин Эндер

Это странно, я думал, что проверил удаление каждого символа - должно быть, забыл v. Спасибо user20150203!
Sp3000

@ Sp3000 Вы даете мне разрешение на использование вашего регулярного выражения в ответе для меня? Я буду сообщать вам репутацию (если возможно), и все кредиты будут указаны в ответе.
Исмаэль Мигель

@IsmaelMiguel Это просто язык, на котором гораздо короче написать функцию для соответствия регулярному выражению? Если так, я признаю, что мне немного любопытно ... (так что я могу украсть это в следующий раз!)
Sp3000

@ Sp3000 Это не короче. Но я просто хочу опубликовать что-нибудь. Прошло много времени с тех пор, как я что-то здесь выложил. И это немного расширит мои знания. Так что это беспроигрышная ситуация для меня. И я дам вам некоторую репутацию, если это возможно, так что это победа и для вас (возможно).
Исмаэль Мигель

13

Groovy, 77 74

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

Я написал тестовую программу на Java, которую вы можете найти в этом Gist на Github. Вот вывод из моей тестовой программы:

Good: 2135 1708
Bad: 101 528

(Не удалось 629 тестов)

PS Я думаю, это очень скоро закончится проблемой с регулярным гольфом ...

Если ответ Sp3000 (функция) будет преобразован в Groovy, он будет иметь то же количество символов. Как названная функция:

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

или безымянная функция:

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

он может потерпеть неудачу только в 335 случаях;) но все равно довольно аккуратно
Teun Pronk

это так неправильно, но это работает ^^
Двана

@TeunPronk: (2236 + 2236) * 0,15 = 670,8. так что вы можете потерпеть неудачу 670. Я думаю, что вы забыли о правильной классификации слов. «Ваша программа или функция должны содержать не более 15% ошибок в заданных списках слов вместе ». (выделение мое)
Нил Слэйтер

@NeilSlater Аааааааааааааааааааааааа, только правильные. Мой плохой ^^
Теун Пронк

9

Javascript, 1626 байт:

Я хотел найти решение, в котором для каждого персонажа есть подсказка, какой из них может последовать. Не так коротко, но нет регулярных выражений и довольно хороший результат (слова: 101 ошибка, не слова, 228 ошибок)

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}

Вот рабочая реализация http://fiddle.jshell.net/jc73sjyn/

Вкратце: объект g содержит символы от a до z (в качестве ключей), и для каждого из них есть набор символов (также в виде ключей), каждый из которых представляет символ, который может следовать после него, а также процент вероятности , Там, где нет объекта, нет вероятности.

3 балла (4 буквы -> 3 оценки) умножаются, и слово со счетом 60 и выше считается реальным словом.

Пример: для слова «справиться» есть три поиска:

г [с] [о] = 20

г [о] [р] = 5

g [p] [e] = 20

оценка = 20 * 5 * 20 = 2000, что больше 60, так что один действителен.

(Я совершенно новичок в javascript, поэтому могут быть способы сделать его короче, чего я не знаю.)

Позднее редактирование:

К настоящему времени не имеет значения, но я оценил свой путь к более правильному 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}}

Новые результаты:

слова: 53 ошибки, не слова: 159 ошибок

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


Я должен добавить, что цифры были найдены путем оценки 2236 правильных слов. Для каждой буквы я просто вычисляю округленный процент каждого преемника. Я подумал сделать то же самое для неправильных слов и как-то вычесть их, но думаю, что это сделало бы оценку менее умной и больше использовало бы ограниченный набор неправильных слов.
Хенрик Кристенсен

2
Мне удалось сократить ваш код настолько, насколько я мог. Я съел около 80 байтов. Не сильно, но меньше. Вот код: pastebin.com/fkPW0D92 . Я заменил ВСЕ номера, которые повторялись более 3 раз, и все еще удалял много раздувания из вашей forпетли.
Исмаэль Мигель

Забыл упомянуть: он работает только на консоли Firefox / Firebug. Это использует новую нотацию ES6 с большими стрелками для создания функций. Вы можете заменить w=>на, function(w)и это будет работать для любого браузера.
Исмаэль Мигель

6

Python 2, 5254 байта

Это решение разделяет добрые слова на две половины. Поиск сначала проверяет первые 2 символа, чтобы найти правильную строку, а затем ищет вторые 2 символа в этой строке. Не очень компактный, но быстрый в написании. Этот метод соответствует каждому слову без ошибок.

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

Более короткие

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

Старый ответ

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
Используется ли локаль по умолчанию? :)
RobAu

@RobAu Не уверен, что впервые использовал.
bacchusbeale

Вы можете сделать это немного короче, используя varи не вводя переменные без необходимости.
Lesderid

3

Слово VBA, 25 байт

Функция анонимного непосредственного окна VBE, которая принимает входные данные в качестве текущего выбора и выводит, если это слово является логическим значением для непосредственного окна VBE.

?CheckSpelling(Selection)

Функция тестера

Приведенная ниже функция была использована для проверки вышеуказанной функции на тестовых примерах. Функция потерпела неудачу в 9,07% случаев (396 реальных слов и 10 поддельных слов)

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

2

Mathematica, 33 байта

Эй, кто-то должен был это сделать!

Length[DictionaryLookup[Input[]]]

Интуитивно понятный.


0

Javascript ES6, 32 байта:

Используя регулярное выражение из ответа @ Sp3000 :

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

Это создает анонимную функцию. Чтобы использовать это, вы просто оборачиваете это вокруг ().

Пример:

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

Это имеет точно такую ​​же частоту отказов, как @ Sp3000, и возвращает trueили falseсоответственно.

Все кредиты из-за @ Sp3000 за то, что он позволил мне использовать его регулярное выражение.


@ Sp3000 Но тогда ты не сможешь позвонить. Это так же, как F = function(s) { return /[^aeiou]{3}|[jqxz]/.test(s) }.
Исмаэль Мигель

@ Sp3000 Я знаю, что это работает, но вы должны потратить больше байтов, чтобы использовать его.
Исмаэль Мигель

@ Sp3000 ОПАСНОСТЬ! В одном шаге от его сокращения: / Спасибо за подсказку. Я обновил это.
Исмаэль Мигель
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.