Спасибо всем участникам нашего последнего конкурса по программированию! Публикуем окончательные, исправленные результаты конкурса.

Мы получили 408 решений от 237 различных участников (в конкурсе участвует только одно, последнее из решений от каждого участника, и мы публикуем именно последние варианты). Кроме того, 14 решений было отправлено нам либо после окончания срока приёма работ, либо сотрудниками Hola, и мы рассмотрели их вне конкурса.

64 решения, или 16% от общего числа, были отправлены в течение последних суток до окончания срока. Из них 15 были отправлены в течение последнего часа, а самое последнее «проскочило» за 34 секунды до дедлайна.

Тесты на корректность прошли 92 программы, что составляет 39% от числа протестированных. Кроме того, корректными признаны 10 из внеконкурсных решений.

Самое короткое решение уместилось ровно в 666 байт, а самое длинное растянулось на 90274 байт.

Один из участников был дисквалифицирован за попытку обмануть тестовую систему. Забавно, что его результат всё равно уступил честным результатам победителей конкурса. Ещё один участник прислал решение с говорящим названием volkswagen.js: оно работает медленно, но корректно при малом размере входных данных, и быстро выдаёт фальшивые результаты при большом размере.

Поздравляем победителей:

  1. Роман Плетнев — приз 1500 USD.
  2. Андрей Кашта — приз 1000 USD.
  3. Евгений Зейлер — приз 500 USD.

Дополнительно мы решили наградить автора самого короткого корректного решения. Специальный приз в 350 USD получает Надав Ивги.

Полная таблица результатов и подробности о тестировании — в репозитории на GitHub. Здесь подробности о причинах пересмотра результатов.

Мы приносим извинения участникам, которые были ранее объявлены победителями конкурса по ошибке.

Мы постараемся учесть многочисленные замечания участников при подготовке следующего конкурса. В частности, в следующий раз входные данные для тестов на производительность или хотя бы их объёмы будут опубликованы заранее. Кроме того, будет выделено время между публикацией всех тестов и решений и объявлением победителей. В эти несколько дней можно будет прислать дополнительные тесты на корректность, а также сообщить об изъянах в системе тестирования.

В промежутках между конкурсами мы тоже приглашаем на работу программистов на JS (браузер и Node.js) и C. Если Вас интересует работа в Hola, или Вы знаете кого-то, кто может нам подойти, пишите по адресу larisa@hola.org. Если Вы приведёте кого-то, кто пройдёт отбор и проработает у нас первые три месяца, мы заплатим Вам 7000 USD.

Комментарии (16)


  1. zBit
    14.01.2016 15:15
    +2

    Вот теперь оценка производительности более объективная, я доволен!
    Спасибо за конкурс, было интересно :) Жаль, что не удалось занять призовое место, но 5-ое место тоже очень не плохой результат :)
    А такая производительности у меня потому, что в моём решении есть несколько стратегий сравнения и если во входных данных у правил не было вариантов с вопросительным знаком и только с одной звёздочкой, то работала одна из самых быстрых в моём решении стратегия сравнения, без использования регулярных выражений.

    А можно где-нибудь достать именно тот набор данных, который вы использовали при тестировании производительности? Мне чисто из любопытства какие правила были и их сложность посмотреть.


    1. feldgendler
      14.01.2016 15:39
      +1

      Об этом написано в README.md: сами данные мы туда не включили из-за большого объёма, но в директории tests есть скрипт, который их в точности воссоздаёт, используя фиксированное значение pseudorandom seed.


      1. zBit
        14.01.2016 15:44

        Спасибо, не заметил, вечером посмотрим :)


  1. Evgeny42
    14.01.2016 16:23
    +2

    Обидно, наверно, тем кто победил по первым результатам.


  1. KingOfNothing
    14.01.2016 16:29
    +2

    48 -> 30 :-)


  1. arusakov
    14.01.2016 16:33

    С 69 места на 8 — очень неплохо! Спасибо за обновленную тестовую систему, наконец-то оптимизации заиграли всеми красками :)


  1. spmbt
    14.01.2016 16:34

    Было бы интересно посмотреть на табличку усреднённых производительностей решений первых 10-15 участников (по тестам), чтобы оценить, за какие проценты скорости шла битва. Организаторы, покажете?


    1. mark_ablov
      14.01.2016 16:46

      А в гитхабе разве таблички нет?


    1. feldgendler
      14.01.2016 17:09
      +1

      Не понял вопрос. В таблице для каждого участника приведено лучшее время из 10 запусков. Тест на производительность ровно один (large), и скрипт для его генерации находится в директории test.


    1. spmbt
      14.01.2016 17:15
      +1

      А, да, на Гитхабе же всё. Приложу сюда для наглядности

      1      Roman Pletnev 	 231  2549
             Ouanalao          260  2676 	Hors concours
      2      Andrew Kashta     281  2917
             Pavel Gruba       286  2993 	Hors concours
      3      Evgeny Zeyler     292  2351 
             Vitaliy (vint)    304  2837 	Hors concours
      4      Yuri Kilochek     332  2130 	
             Ecma Scripter     333  2711 	Disqualified[1]
      5      Alex Kheben       360  2953 	
      6      Igor Klopov       367  2745 	
             Maksim Razumenko  368  3555 	Hors concours
      7      Sergey Golub      375  3891 	
      8      Alexander Rusakov 382  3495 	
      9      Denis Bezrukov    394  3581 	
      10     Vitalii Petrychuk 403  3701
      


  1. Lure_of_Chaos
    14.01.2016 17:11
    +3

    Самое короткое решение уместилось ровно в 666 байт

    Никак помощь со стороны :))


  1. datacompboy
    14.01.2016 18:24
    +2

    Всё-таки, следует _четко_ и _подробно_ расписать ПОЧЕМУ было произведено перетестирование.
    Из комментариев вытаскивать сложно большинству, а факт того, что пересмотр не потому, что изменили правила не очевиден


  1. feldgendler
    14.01.2016 21:29

    О причинах был отдельный пост: habrahabr.ru/company/hola/blog/274961


    1. datacompboy
      14.01.2016 22:29
      +1

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


  1. whoozle
    17.01.2016 15:57

    Мне кажется, чтобы сохранить лицо, можно было бы выдать ВТОРОЙ комплект призов, чтобы не обижать несчастных рязанских программистов. И не было бы никаких срачей. Это же и есть то самое признание ошибок, которое «в ДНК»? Все рады, ошибки признаны, никто не злится, хола на коне. Денег-то в масштабах даже небольшой компании — тьфу.

    Нет же, надо было бодаться, пересматривать, ругацо со всеми.