Pull to refresh

Comments 62

Интересно было читать, спасибо! Люблю оптимизировать. А профайлер не использовался ни разу?
Так сложилось, что на момент борьбы с этой задачкой я профайлерами пользоваться ещё не умел.
С другой стороны, когда на протяжении недели живёшь в куске кода, размером в пару страниц, он особо и не нужен.
Оставайтесь на месте, за вами уже выехали? 0_o
Как я понял из общения на фейсбуковском форуме, предложения они перестали рассылать задолго до того, как я вообще узнал об этих задачках.
Вообще, если бы я решал эту задачу (алкотестер в Facebook), то я бы не решал её исключительно методом анализа количества допущенных ошибок. Куда интереснее было бы рассмотреть не сам текст, а то, как пользователь его вводит (скорость набора, количество исправлений при наборе). Особой эффективности этот метод добивался бы в случае, если для пользователя хранилась история его скорости набора и исправлений в виде каких-то коэффициентов по дням. Тогда сильное отклонение этих двух коэффициентов в совокупности срабатывало бы как вполне себе неплохой алкотестер (пользователь часто промахивается и набирает медленнее, чем обычно). Правда тут программирование было бы возможно только на Javascript (в рамках этой социальной сети).
Да, согласен, что со словарем сравнивать ошибочно, ведь есть ОЛБАНСКИЙ!11 язык, да и, собственно, язык оно может неправильно определить, а тогда уж ошибок не оберешься.
Ну, тут идея всё же не в том, чтобы написать реальный алкотестер.
Я тоже думал, что надо будет дуть в один из усб-портов )))))
Если человек заходит на фейсбук только в нетрезвом виде, то как поступим? Может, пусть сам решает, что делать, а чего не делать? А то получится как с антиблокировочной системой (ABS) у автомобилей, водители слишком стали полагаться на эту систему и ездить более рискованно, вследствие чего количество аварий на дорогах не уменьшилось, а увеличилось, поскольку ABS не всегда срабатывает, да и уменьшает тормозной путь не одинаково в разных ситуациях.

Я считаю, что нужно приучать людей к ответственности, а не перекладывать ее на плечи автоматики.
Пусть лучше сервис ошибки исправляет у двоечников, а то иногда так пишут, что читать невозможно… ;)
Ох, и здесь жертвы маркетинга…

ABS как минимум не уменьшает тормозной путь, у этой системы немного другие задачи
Я до сих пор удивляюсь, когда сталкиваюсь с мнением о том, что предназначение ABS — уменьшить тормозной путь. И ведь сталкиваюсь с этим просто постоянно! Самое хреновое, что бывает так: «Не топи так, не успеем затормозить.» — «Да, фигня, у меня ABS, быстрее затормозим!».
В данном случае оба — это кто?
Хотя основное назначение ABS это сохранить управляемость при торможении, но она также сокращает тормозной путь, кроме ряда случаев например, при торможении на рыхлых поверхностях.
так-то, автор выше прав – если говорить о предназначении ABS с точки зрения тормозного пути, то эта система старается препятствовать его значительному увеличению, потому что срабатывает она тогда, когда тормозной путь рискует увеличиться в несколько раз за счет того, что заблокированные тормозами колеса просто скользят по дорожному покрытию, как кросовки с плоской подошвой по льду.
Позанудствую. Задача ABS — предотвращать полную блокировку колес. Не для того, чтобы менять длину тормозного пути, а единственно для того, чтобы сохранять управляемость машины. Чтобы можно было давить тормоз в пол и объезжать препятствие.
я же отметил, что «с точки зрения тормозного пути» :) так-то, да – одной из решаемых антиблокировочной системой проблем является сохранение возможности маневрировать во время экстренного торможения. но проблема эта не единственная, так как движение юзом при торможении обеспечивает не только отсутствие маневренности, но и значительное увеличение тормозного пути, занос задней оси и не самые страшные, но все же последствия ввиде повышенного и неравномерного износа резины.
таким образом (если уж занудствовать), ABS борется не с потерей маневренности или увеличением тормозного пути при экстренном торможении, а с возникновением юза при превышении тормозного усилия над силой сцепления резины с дорогой.
кстати, на поездах тоже есть своеобразная антиблокировочная система, целью которой является именно предотвращение увеличения тормозного пути и истирания колесных пар (которые начинают потом повышено шуметь) – маневренность рельсовому транспорту, как вы понимаете, ни к чему, а вот максимально короткий тормозной путь и максимально круглые колеса большим поездам достаточны важны.
и если уж совсем оффтопить, то… меня при неисправности ABS на поздно замеченном повороте градусов под 110, на заснеженной трассе, на скорости 100 км/ч огорчило не только отсутствие маневренности (при сильном повороте руля вправо траектория движения изменилась совсем незначительно), но и значительное увеличение тормозного пути, который при снижении скорости километров до 70 закончился столкновением с припаркованным на обочине МАЗом :) я бы даже сказал, что меня бы больше спасло именно уменьшение тормозного пути.
Вы меня извините, а с работающей ABS поворот на 110 градусов на скорости 100 км/ч по заснеженной трассе — это вы считаете нормальным?

Слава богу, что вы не водитель МАЗа…
Если бы я знал об этом повороте, то обязательно бы снизил скорость заблоговременно до допустимой, но если бы да кабы… Работающая ABS помогла бы мне значительно эффективнее снизить скорость и при этом изменить траекторию движения так, чтобы избежать столкновения.
Хотя насчет траектории в моем случае я не очень уверен, так как на скользкой поверхности заднеприводные авто даже при вращении всех колес не очень маневренны, но это в худшем случае был бы сугроб, а не МАЗ :)
Как бы по ПДД предельная скорость 90 и это на нормальной чистой трассе.
Вы хотите сказать, что соблюдаете ограничения скоростного режима? Мне кажется, что это откровенное лицемерие, которое свойственно только ханжам.
Я — да, всегда. В этом вы видите что то странное?

Кстати, судя по наблюдениям, большая часть машин идет в районе 85. И лишь единицы несутся быстрей.
А я, к сожалениею, не соблюдаю. Для меня странно ехать 90. Это конечно не отменяет того факта, что я мудак и упоролся в стоячий МАЗ, но в допустимых условиях я считаю нормальным ехать и 160.

Кстати, 85 называется отвратительным словом «тошнить».

И это уже какой-то флейм.
Как бы основная масса транспорта именно что едет с такой скоростью и это самая стандартная скорость потока. Если этот поток кому то и мешает, то это проблемы этих выскочек.

А где вы видели допустимые условия? Я знаю только одно такое место — немецкий автобан и то далеко не на всех участках.
А чего за срач? Новый NFS вышел?
А если человеку понадобилось напечатать одной рукой? ;)
Не самое лучше решение, так-как много сообщений на ФБ идут с самых разных мобильных приложений, веб-сервисов, кросс-постов с твиттера и тп.
Если так дело пойдет, то (ро)боты сами будут тексты писать. Им сказать в микрофон основные факты, а они тему разовьют ;)
Непонятно, какой порог на количество ошибок в слове. Ибо может быть как в известной шутке: «Если в слове ПИВО сделать 4 ошибки, то получится ХЛЕБ».
Никакого порога нету. Нужно просто посчитать их количество.
Да нет же, как вы определяете слово «правильное» из словаря, на которое данное слово похоже? Или там не обязательно, чтобы программа правильно определяла нужное слово, можно и совсем другое, но с меньшим расстоянием (кол-вом исправлений)?
По условиям задачи поиск «правильного» слова не нужен, нужно найти, до какого слова из словаря дистанция меньше и посчитать эту самую дистанцию, а в конце вывести сумму для всех слов текста.
Хех, практически все те же мысли приходили мне, когда я решал эту задачку, разве что дальше третьей итерации я не двинулся.

У меня на php результат 8158.586
Тоже на чистом PHP. Только я в другую сторону оптимизировал, нежели автор:

After running your solution to breathalyzer (received on March 26, 2011, 7:23 am), I have determined it to be correct. Your solution ran for 4952.985 ms on its longest test case.

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

интересно посмотреть что за оптимизация
Функция Левенштейна напоминает мне анекдот: «если в слове „хлеб“ сделать 4 ошибки, то получится слово „пиво“».
И если в слове «ХАБР» сделать 4 ошибки, получится «ПИВО»… Мистика)
Занимательная статья, интересно было читать. Надо найти себе тоже головоломок чтоли, заодно правда и время для их решения придется поискать.
Статья, безусловно, хорошая, но я согласен с предыдущим комментарием, ведь количество ошибок при наборе может быть и очень незначительно. Человек, к примеру, может оставить простой комментарий «Awesome!» там, где этого делать совсем не нужно. Или же просто «f**k you». Думаю даже сильно пьяный человек врятли сделает в этих словах ошибки.

А автору хотелось бы намекнуть, что код хорошо было бы комментировать. Разбираться в незнакомом языке крайне тяжело.
> врятли
GrammarNazi негодует в топике про ошибки в словах. Нужно писать не «врятли», а «вряд ли».
Шикарно, отлично расписано, спасибо большое!
UFO just landed and posted this here
а если слова отличаются именно префиксами, а суффиксы у них одинаковые?
UFO just landed and posted this here
Есть ли особый смысл в использовании
if dic[edit.length] ? dic[edit.length].include?(edit) : false
вместо
if dic[edit.length] && dic[edit.length].include?(edit)
?
я не уверен в порядке выполнения if dic[edit.length] && dic[edit.length].include?(edit). Если dic[edit.length]==nil, то второе выражение вызовет ошибку. Чтобы гарантировать порядок выполнения вычисления, я использую тернарный оператор.
порядок исполнения && гарантирован. если dic[edit.length]==nil, то второе условие, согласно lazy evaluation, не будет отработано.
Работа сделана, безусловно, с толком и расстановкой, но, к сожалению, IMHO, базируется она на изначально ложном предположении об увеличении количества орфографических ошибок от опьянения.
Наверное, мне не следует проводить аналогий между собой и другими людьми, но мои наблюдения за собой говорят, что трезвый и пьяный я пишу одинаково хорошо. Разница наблюдается лишь в многословии и экспрессивности. :)
Это предположение задаётся условиями задачи, ссылка на которую приводится в первых абзацах.
Спасибо, было интересно! Сам недавно заинтересовался «программистскими задачками»
Очень интересный анализ. Однако, Puzzle Master предлагает решившим не спойлить решения, а помогать только такими советами, которые не уменьшат сложность задачи.
PuzzleMaster уже несколько месяцев не может реанимировать бота, так что вряд ли эту рекомендацию можно считать актуальной.
В Android 2.3 от Cyogen есть «пьяный режим» на группы контактов. Для возможность позвонить контактам из указанного режима — это решить некоторые математические задачки. Решил — звони, не решил — пей дальше…
Ох уж эти математические задачки… Поставил себе будильник xtreme, который предлагает их решить, чтоб была возможность выключить, но мозг адаптировался за неделю, и сейчас решает их практически во сне (((
программа — GrammarNazi, а совсем не алкотестер)
Sign up to leave a comment.

Articles