Конкурс по программированию на JS: Классификатор слов (дополнение)

Спасибо всем, кто уже поучаствовал или собирается участвовать в нашем конкурсе по программированию!

Мы решили опубликовать ряд важных разъяснений к правилам, чтобы помочь участникам избежать типичных ошибок. Обидно было бы дисквалифицировать интересное решение из-за чисто технической ошибки.

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

Для отправки работ осталась ещё неделя. Если этот пост помог Вам найти ошибку, ещё есть время её исправить.

Часто задаваемые вопросы


  • Как же я смогу прочитать файл words.txt, если нельзя загрузить модуль fs? А можно ли скачать его из интернета? Можно ли использовать process.binding?
    Ваша программа не будет иметь доступа к файлу words.txt. В этом и смысл. Если бы можно было просто прочитать этот файл, задача была бы тривиальной. Ничего нельзя скачать, потому что для этого понадобились бы такие модули, как http или net. Включить словарь в своё решение тоже не получится из-за ограничения по размеру.
    Это означает, что написать решение, всегда дающее правильные ответы, скорее всего, невозможно. Но можно написать программу, которая чаще угадывает правильно, чем неправильно, и тот, чья программа точнее угадывает, победит.
  • В словаре есть некоторые слова с прописными буквами. Могут ли они попасться в тестах?
    Могут, но они будут переведены в нижний регистр.
  • Что означает »64 КиБ»?
    64×1024 = 65536 байт.
  • Если мой файл данных сжат методом gzip, то должен ли его размер до или после сжатия укладываться в 64 КиБ вместе с текстом программы?
    Учитывается размер после сжатия.
  • Что за странный словарь! Там полно каких-то непонятных слов.
    Мы знаем, что он странный. Это самый большой словарь английского языка для проверки правописания, в который входит большое число аббревиатур, заимствований, редких слов, диалектизмов и даже невозможных словоформ. Тем не менее, мы выбрали именно этот словарь, поэтому для данной задачи «английское слово» — это то, которое встречается конкретно в этом словаре.
  • Какого размера набор «не-слов», используемый в генераторе тестов?
    Генератор тестов не использует какого-либо фиксированного набора «не-слов». Он генерирует псевдослучайные слова, похожие на английские, непосредственно при запросе по алгоритму, который мы опубликуем при подведении итогов конкурса.
  • Как тестовая система будет учитывать дубликаты, то есть слова, встречающиеся более чем в одном из блоков по 100 слов?
    Каждое вхождение будет учитываться как отдельное слово. Посмотрите, как устроен наш скрипт для тестирования.
  • Что, если победителю ссылку на конкурс прислали два человека?
    Премию получит тот, кто прислал её первым.

Типичные ошибки


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

  • Функции test и init не экспортированы или экспортированы неправильно. Недостаточно просто объявить функции, их надо экспортировать из модуля. Если Вы не уверены, что сделали это правильно, проверьте свою программу нашим тестовым скриптом.
  • Функция init работает со своим аргументом data как с текстовой строкой, тогда как в условии явно сказано, что это будет Buffer.
  • Программа использует файл данных, но он не приложен.
  • Файл данных упакован методом gzip, но соответствующая опция в форме отправки не выбрана.
  • Опция gzip в форме отправки выбрана, но файл вместо gzip представляет собой zip-архив. Это не одно и то же!
  • Программа пытается использовать require или process.binding. Это запрещено правилами.

Удачи всем участникам!

© Habrahabr.ru