Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 13 лет назад, По-русски

Прием решений участников завершен. Спасибо за участие. В скором времени мы проведем финальное тестирование и подведен результаты.

Всем доброго дня.

Все что написано ниже не первоапрельская шутка, но тоже мероприятие веселое :) Мы рады анонсировать новое экспериментальное соревнование на Codeforces — "Парсер контест: разбор архива задачи".

Вы когда-либо составляли тренировки, используя архивы прошедших контестов? Вы выкачивали из интернета архивы контестов для тестирования своих решений локально? Если да, то вы не могли не заметить, что каждый организатор так и норовит придумать свой собственный формат распространения задач. Да это правда!

За свою жизнь я подготовил и провел огромное количество тренировок по прошедшим соревнованиям. Зачастую, это довольно однообразное занятие — часто к каждой задаче надо писать какие-то скрипты, которые переименовывают входные/выходные файлы задачи в стандартный вид. В архивах они называются совсем по-разному: может это river.in.1, river.out.1, river.in.2, river.out.2 и т.д. В другой задаче это может быть tests/1.dat, tests/1.ans, tests/2.dat, tests/2.ans и т.п.

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

Codeforces работает над функциональностью по улучшению проекта как тренировочной площадки. Мы планируем дать пользователям возможность готовить и проводить тренировки непосредственно на Codeforces. Вы сами подготовите тренировку или выберите публичную для участия. Подготовили сами? Отлично! Дайте общий доступ к ней и люди скажут вам спасибо.

Нами уже проделана большая работа, и некоторая часть функционала разработана. Впереди еще много дел, технически непростых моментов и просто рутины. Однако, я уверен, что сообщество молодых талантливых программистов может справляться с некоторыми задачами не хуже команды Codeforces. Например, это может быть задача автоматического распознавания содержимого архива задачи.

Итак, если коротко, вам задан набор файлов, имеющих отношение к этой задаче. Ваша программа на основании подмеченных закономерностей, эвристических решений или как-то иначе должна выделить файлы тестов (входные данные и ответы), решения и исходник чекера.

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

Так как почти вся кодовая база Codeforces написана на Java, то и решения к этой задаче мы ожидаем на этом языке. Мы полагаем, что вам не понадобятся глубокие знания Java — наверное, будет достаточно базовых знаний о языке.

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

  • 1 место — 8000 руб.
  • 2 место — 4000 руб.
  • 3-5 место — 2000 руб.


Условие задачи

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

Относительные пути всех файлов, имеющие отношение к рассматриваемой задаче, перечислены в файле files.lst, находящимся в корне. Разделителем в путях каталогов является символ '/' (UNIX-разделитель).

Пример (files.lst):

tester/check_a.pas
tester/check_a.exe
a/tests/02.in
a/tests/01.ans
a/tests/01.in
a/tests/02.ans
a/tests/gen.exe
a/tests/t.bat
a/tree_mm.exe
a/tree_mm.cpp
a/doall.bat
a/problem.xml
a/validator.cpp
a/tree_dm_wrong.cpp

Программа имеет право читать и анализировать исключительно те файлы, которые перечислены в files.lst.

Задача программы — выделить набор тестов в данной задаче (официальный, если их несколько), исходные тексты решений (если найдены) и исходный текст проверяющей программы (если найден).

Результат работы программы должен быть выведен в стандартный поток вывода. Вывод должен содержать от одной до трех секций: секция тестов, секция решений и секция чекера (обязательной является только секция тестов).

Секция тестов должна начинаться строкой "tests:". Далее она должна содержать одну или более строку, состоящую из имени файла самого теста и имени файла ответа на этот тест, разделенных символов ':' (двоеточие). Тесты должны быть перечислены в порядке возрастания их номеров в оригинальной задаче. Выводить следует только официальные тесты (в случае, если было найдено несколько наборов тестов).

Пример (секция тестов):

tests:
a/tests/01.in:a/tests/01.ans
a/tests/02.in:a/tests/02.ans

Секция решений, если она присутствует в выводе, должна следовать второй по порядку. Секция начинается строкой "solutions:". Далее следуют строки, содержащие имена файлов исходных текстов решений. Порядок следования имен файлов — лексикографический. Под решениями понимаются как правильные, так и неправильные решения (которые зачастую так же присутствуют в архиве жюри).

Пример (секция решений):

solutions:
a/tree_dm_wrong.cpp
a/tree_mm.cpp

Секция чекера, если она присутствует в выводе, должна начинаться строкой "checker:" и содержать единственный элемент — имя файла с исходным текстом чекера.

Пример (секция чекера):

checker:
tester/check_a.pas

Таким образом, полный вывод может иметь вид:

tests:
a/tests/01.in:a/tests/01.ans
a/tests/02.in:a/tests/02.ans
solutions:
a/tree_dm_wrong.cpp
a/tree_mm.cpp
checker:
tester/check_a.pas

Все имена файлов в выводе должны быть именно в том виде, как они представлены в файле files.lst.

Ваше решение будет запускаться с ограничением на используемую память "-Xmx32M -Xss1M" (размер кучи 32M, размер стека 1M). Ограничение на время работы — 1 секунда.

Главный класс вашей программы должен иметь имя ProblemParser и находиться в пакете по умолчанию.


Как все будет проходить

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

Вас ждут знакомые вкладки: отослать, мои посылки, статус и положение участников. Отсылать вы можете либо один файл (ProblemParser.java) или zip-авхив с исходными текстами вашего проекта.

Тестирование в эти две недели будет производиться на 30-ти тестах. Первые десять из них открытые — вы можете их скачать (архив обновлен). В архиве доступны ответы на эти тесты, они расположены в файлах answer.lst. Двадцать оставшихся тестов вам не известны. Участников мы сортируем по невозрастанию баллов, при равенстве — по уменьшении. времени достижения балла. Решения можете отсылать сколько угодно раз, если будет очередь, то установим ограничение на частоту посылок. Учитывается балл за последнее решение по задаче.

Решение может набрать один балл на каждом тесте. Частичная ошибка на тесте приводит к его непрохождению.

После окончания основной части соревнования, нами будет проведено дополнительное тестирование. Для каждого участника будет протестировано его последняя попытка на расширенном наборе тестов. Этот набор будет содержать 20 уже знакомых закрытых тестов и 20 новых. Так как задача и система проведения ну очень экспериментальная, то мы оставляем за собой право что-то менять по ходу контеста, хотя я надеюсь, что существенные изменения не понадобятся.

Все тесты, это настоящие задачи (возможно, слегка модифицированные). Задачи взяты из разнообразных источников — мы постарались максимально покрыть географию их происхождения.

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

Пусть победит сильнейший,
MikeMirzayanov

UPD: В архиве исправлены некоторые недочеты, рекомендуется скачать его заново.

  • Проголосовать: нравится
  • +67
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
I used Google translate but I didn't understand everything, but it looks very interesting.
I'm waiting for the English translation.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    I think Google translate did the job well on translating the idea, at least I know what to do briefly.

    By the way, does files.lst in e04 intentionally contain misleading information? I found that there is a folder swe, which contains testdata but the folder does not appear in files.lst, instead it is contained in files.lst.old.

    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Yes, we prepared a testdata manually and did a mistake. File files.lst in the test 4 is wrong. It will be fixed today. Thank you.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
        Nevermind. Here's the list I have used for files.lst for e04:

        swe.cpp
        swe.pdf
        swe.ps
        swe/swe0.in
        swe/swe0.out
        swe/swe10.in
        swe/swe10.out
        swe/swe1a.in
        swe/swe1a.out
        swe/swe1b.in
        swe/swe1b.out
        swe/swe2a.in
        swe/swe2a.out
        swe/swe2b.in
        swe/swe2b.out
        swe/swe3.in
        swe/swe3.out
        swe/swe4.in
        swe/swe4.out
        swe/swe5.in
        swe/swe5.out
        swe/swe6.in
        swe/swe6.out
        swe/swe7.in
        swe/swe7.out
        swe/swe8.in
        swe/swe8.out
        swe/swe9.in
        swe/swe9.out

13 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
unofficial partial english version.
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
забавная штука
надо будет попробовать
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А скрипт-победитель повесят на polygon? Было бы здорово.
13 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
В условии говорится "Ваша задача написать java-программу, которая запускается в каталоге, содержащем файлы одной или нескольких задач."
Что делать, если в каталоге файлы нескольких задач? Для какой выбирать тесты и чекер?
Что подразумевается под "официальными" тестами?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    1. Все файлы, имеющие отношение к этой задаче перечислены в files.lst На другие можно не обращать внимание.

    2. Иногда бывают дополнительные наборы тестов: samples, или какие-то предварительные тесты. В таком случае, решение должно выбирать тот тестсет, который основной. Обычно он самый полный.
13 лет назад, # |
  Проголосовать: нравится -16 Проголосовать: не нравится
А что с TL?
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Хорошая мысль. Вова Чалышев писал скрипт на bash для установки контестов с neerc под ejudge для нашего сервера. Давно думали об его унификации. А возможно не личное участие, а командное (2 человека)? 
  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Хм.. Я пока не думал, надо подумать. Интересно, что думают другие участники?
    • 13 лет назад, # ^ |
        Проголосовать: нравится +14 Проголосовать: не нравится
      А почему бы и нет?
      Ведь главная цель парсерконтеста не померяться рейтингом, а принести максимальную пользу ресурсу. Денежный приз в этом случае получает капитан команды (как он разделит между коллегами - их внутреннее дело), а слава достается всему коллективу лучшего решения в неограниченном количестве и даром, и пусть никто не уйдет обиженным!
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да, можете принимать участие вдвоем. Отпишитесь здесь о составе.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Как узнать, в чем проблема?
Выдает ошибку тестирования.
Нельзя ли выводить какое-нибудь сообщение, как при ошибке компиляции?

Что такое пакет по умолчанию? Это никакого пакета или что-то нужно написать? Может с этим быть проблема?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Были некоторые недонастройки с нашей стороны - теперь у вас WA на всех тестах. Да, пока все RE отображаются как "отказ тестирования", вскоре исправим.

    Пакет по умолчанию - это пустой пакет, т.е. ProblemParser должен располагаться в корне директории исходных текстов.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Спасибо.
      Еще такая неисправность (?): у меня не получается отослать исходник (то есть один java-класс) - принимает только архив или копипасту.
13 лет назад, # |
  Проголосовать: нравится -11 Проголосовать: не нравится
Я не совсем понимаю смысл такого контеста...

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

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

Зачем нужно, чтобы участники писали нечто, что кое-как обрабатывает что-то им неизвестное, и совершенно непонятно как будет обрабатывать то, что может появиться в будущем?

Я понимаю, что поучаствовать интересно, но результат будет иметь гораздо меньшую практическую ценность, чем мог бы иметь.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится
    А вы можете перечислить все возможные форматы? Цель соревнования не в том, чтобы участники захардкодили все предоставленные форматы, а чтобы были написаны "искусственно-интеллектуальные" алгоритмы, которые с большой долей вероятности будут работать и на других форматах. Я надеюсь, что решения победителей будут набирать балл близкий к максимальному на нашем наборе задач и почти всегда работать на новых форматах.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      А зачем все возможные форматы? Берем все известные на данный момент, а по мере появления новых (что довольно редко) добавляем плагины. Зачем тут "искусственно-интеллектуальные" алгоритмы? Ну будет он почти правильно парсить 99% архивов. Зачем это нужно? Руками потом что-ли править его работу? Надо чтобы он парсил 100% правильно те форматы что нам известны. Т.е. это был бы хороший архитектурный+девелоперский контест в терминах топкодера. AI тут незачем помоему.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится
        Форматов очень много. Вы уверены, что набор файлов одновременно не будет удовлетворять двум захардкоденным форматам? Что тогда? Откуда вы взяли оценку 99%. Существует вероятность, что она окажется 99.9%. Да, если корректно разобрать задачу не получается, то можно и помочь алгоритму руками. Не думаю, что это страшно. Кроме того, по правилам соревнования вы можете хардкодить в решении все что угодно (в пределах разумного на размер исходника).

        Кроме того, лично мне веселый и необычный AI контест показался интереснее "хорошего архитектурного+девелоперского в терминах топкодер".
        • 13 лет назад, # ^ |
            Проголосовать: нравится +6 Проголосовать: не нравится
          Если бы я участвовал в архитектурном контесте, то наверное предложил бы что-то типа такого:

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

          Можно было бы сделать и более расширенную версию. Где каждый плагин говоит не "да-нет", а выдает процент соответствия.
          Также сделать два режима - автоматический и ручной парсинг. Автоматический парсит только со 100% вероятностью единственным образом. Ручной выдает отчет анализа соответствия, возможно предпросмотр результатов и спрашивает пользователя что выбрать.

          В общем куча вариантов...

          А как вы будете пользоваться эвристическим парсером? Вот я скачал новый архив с сайта какого-нибудь. Распарсил вашим кодом и что? Как я пойму правильно он распарсил или не правильно? Все или не все? Это я должен буду глазами каждый раз просматривать весь архив и сверять с тем что выдал парсер?
          • 13 лет назад, # ^ |
              Проголосовать: нравится +12 Проголосовать: не нравится
            2. ... Если несколько - просят юзера выбрать один из списка подходящих.
            ...каждый плагин говоит не "да-нет", а выдает процент соответствия.Также сделать два режима - автоматический и ручной парсинг...

            Ну вот вы и описали простенькую систему поддержки принятия решения (DSS), с простенькой реализацией AI, основанном на вероятностном анализе.

13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

"Тестирование в эти две недели будет производиться на 30-ти тестах. Первые десять из них открытые — вы можете их скачать" ->

Not Found

The requested URL /codeforces/files/parsercontest-examples-1-10.zip was not found on this server.

Это так надо или временный баг?

13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
По-моему в 6 тест-кейсе ошибка: файл должен начинаться со строки "tests:".
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
9 тест

В files.lst
problem/Source/tester.dpr
problem/Source/TESTER.PAS

В answer.lst
checker:
problem/Source/tester.dpr

Почему TESTER.PAS не считается чекером? TESTER.PAS фактически совпадает с tester.dpr за исключением некоторых ключей компиляции.


  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Эта задача из рельного контеста. Здесь в качестве чекера используется tester.dpr. Видимо, tester.pas это был чекер написанный под Borland Pascal, его изменили, чтобы скомпилировать Delphi и получился tester.dpr.
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      Снова вопрос по 9 тесту
      "Все имена файлов в выводе должны быть именно в том виде, как они представлены в файле files.lst."

      Во входном файле
      problem/Source/A.PAS

      В ответе
      problem/Source/a.pas
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

      тогда что-то вроде:

      files/checker_best.cpp

      files/checker_new.cpp

      files/checker_new.java

      files/checker_the_best_very_new.pas


      Должно вгонять в ступор %)

      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
        Ага
        Можно, в принципе, читать время изменения файла, только вот в выложенном архиве оно у всех файлов одинаковое
    • 13 лет назад, # ^ |
        Проголосовать: нравится -12 Проголосовать: не нравится

      > Здесь в качестве чекера используется tester.dpr.

      Э... а как вы это узнали???

      Получается вы обладаете дополнительной информацией - может стоит предоставить её и контестантам? Так это больше будет похоже на соревнование по созданию ИИ, а не по гаданию.

      • 13 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится
        В данном случае - это реальная задача с одного из моих контестов.

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

        В данном случае, есть чекеры на Borland Pascal и на Delphi, которые более-менее идентичны между собой. Логично, что если вы поставлены перед фактом выбрать один, то выберите тот, который компилируется более современным компилятором. Кроме того, среди данных файлов присутствует tester.exe, который по регистру написания файла совпадает с tester.dpr, а не с TESTER.PAS и является win32-исполняемым файлом. Как бы намекает.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          > Логично, что если вы поставлены перед фактом выбрать один, то выберите тот, который компилируется более современным компилятором.
          Да, конечно я буду пользоваться самым современным компилятором - FPC, и файлы для него (по официальной рекомендации) имеют расширение .pas или .pp, но никак не .dpr. И наличие бинарников под всякие древние ОС мне ни о чем не скажет, т.к. раз от меня требуют исходник, то для меня главным критерием, я думал, является то, чтобы он компилировался и правильно тестировал. А оказывается это совсем неважно! Я могу вернуть правильный чекер, который компилируется и правильно работает, но это будет неправильный ответ.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            1. Почему Free Pascal современный компилятор? В нём же даже тип Integer 16-битный, разве нет? Да и баги в нём есть, например, в последний раз, когда я проверял, функция seekeof работала совсем не по документации (эта её страница, кстати, тоже вполне противоречива).

            2. Наличие бинарника под любую систему повышает вероятность того, что эта программа не просто лежит в архиве, а ею на самом деле пользовались. А то — мало ли какие недописанные чекеры, которые даже совсем не обязаны компилироваться, кто-то когда-то писал к этой задаче...

            А вообще, странно спорить в таком ключе об условии задачи. По-моему, ответ Михаила следует принять как разъяснение по условию, а не доказывать, что условие не соответствует твоим представлениям об архивах с задачами.
            • 13 лет назад, # ^ |
              Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

              1. В Delphi багов не меньше... но FPC хотя бы активно допиливают. А... ну ещё FPC более "современный", потому что работает во всех современных ОС, а не только в Windows.

              2. А если пойти дальше "вероятности", то можно проверить что он дописан, компилируется и правильно чекерит. Почему мой ответ в таком случае будет считаться неправильным?

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

              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                1. Компилятора Delphi тоже выпускают новые версии. Я недавно видел Delphi XE, вполне работает.

                2. Ну встроить в решение компилятор для проверки корректности — это ещё ладно. Но боюсь, что задача “определить, правильно ли чекерит” окажется алгоритмически неразрешима. Даже если предположить, что уже написан формальный пониматор условия.

                Вот найти бинарник — вполне понятная задача.
                • 13 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится
                  > задача “определить, правильно ли чекерит” окажется алгоритмически неразрешима

                  Не факт. С какой-то степенью "вероятности" мой супер-ИИ вполне может справится (в простейшем случае: если на эталонных решениях чекер выдает OK, а на любом другом мусоре WA), и для некоторых частных случаев это может работать.

                  Но вот стоит ли решать эту задачу и создавать такое подобие ИИ??? Если в условии от меня требуют "чекер", я в конкретном случае возвращаю исходник, который компилится в нормальной ОС, работает, и в данном случае корректно тестирует, т.е. достойно претендует на то, чтобы называться "чекером"... но этот ответ неправильный.

13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
20 tests (21st-30th)
Do you mean 10 tests or possibly 11th-30th or something else?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Я так понимаю предполагается разбирать архив, уже подготовленный к загрузке в некоторую систему тестирования?

Ведь архивы задач часто распространяют со всякими скриптами и генераторами, причём скрипты могут быть на чем-нибудь вроде sh, bat или py. Более того, чекеры работают по-разному в различных системах - их надо изменять. Даже тесты могут (иногда) содержать различные типы переводов строк... Есть ещё условие задачи, которое было бы неплохо как-нибудь обработать.

В общем: программа, которая дифференцирует файлы с готовыми тестами по категориям - это конечно забавно. Но при адаптации архива задачи к неродной системе тестирования ручной работы останется очень много.

То есть 

  • 13 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится
    Да хотя бы тесты переименовать/покопировать + чекеры покомпилить и положить в нужное место - уже всё лучше, чем вручную это делать. Останется только конфиг поправить и лимиты выставить.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Каков максимальный размер исходника для этого соревнования?
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
При отправке архива с более чем одним файлом получаю сообщение: "zip архив не содержит ProblemParser.java"
13 лет назад, # |
  Проголосовать: нравится -11 Проголосовать: не нравится
Why can't you make test data by yourself or someone who provide the problems? If I can't solve the problems or can't understand the problems,how can I make test data? Is that a joke?
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +12 Проголосовать: не нравится
    I don't agree with you. If this line is true
    "Everything written below is not a April Fool's joke. Though it is also a funny occasion :)"
    then it's not a joke.
    And the author is making the test data, of course. This is a real live problem, not an Algorithm problem so the test data must be use from the real live. I think each test is the live case, for example, the output file extestion can be .ou, .o, .ans, or something else, the output and input files aren't in the same folder,..... Personally, I just fast read the whole problem and I think I understand it fairly
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Вас ждут знакомые вкладки: отослать, мои посылки, статус и положение участников. Отсылать вы можете либо один файл (ProblemParser.java) или zip-авхив с исходными текстами вашего проекта.

А взламывать чужие решения можно будет ?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    IMHO единственный критерий корректности тест кейса для данной задачи -- был ли этот набор файлов сгенерирован в реальной жизни реальными жюри после реальной олимпиады или нет. Стало быть все придуманные тест кейсы некорректны => взлом проводить нельзя.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Для проверки решения на взломах нужен правильный ответ, который сообщит правильное решение, которого у жюри пока нет. :-)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Нет, это другой вид соревнования
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Awesome idea, although it would be better if you could accept other languages (for example Python). Given that this is not an algorithmic task and that the main focus is on finding a good answer and not the time or memory complexity I think more high-level languages should be encouraged. (I know there is also a time and memory limit but I feel that those were put there so that people won't take advantage, I can't imagine a possible solution that would require more than 32 MB and more than 1 second running time).
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А почему во втором тест кейсе в список тестов не включены три теста вида examples/jez/jez.in.x?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
In the answer.lst file within e01, shouldn't the tests files in the output have WINDOWS appended to the front of their relative paths, since that's how they appear in files.lst?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А что означает вердикт "Отказ тестирования"?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Объясните вот эту фразу: "Все имена файлов в выводе должны быть именно в том виде, как они представлены в файле files.lst"

Почему в первом же тесте в files.lst:
WINDOWS/J1/j1.1.in
WINDOWS/J1/j1.1.out
...

А в answer.lst:
tests:
j1.1.in:j1.1.out

Когда путь в файлу убирать, а когда нет?

Почему регистр файлов иногда не совпадает?

Почему в 4-м тесте files.lst пустой, а ответ нет? Сказано же, что другие файлы (кроме тех, что перечислены) не трогать.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    Ага, есть новая версия файлика - все вопросы снимаются. Вы в виде патчей  бы новые версии выкладывали... А то 27 метров по n-му разу качать не очень удобно.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

6-й тест: почему data/v_elev.cpp не считается чекером? Вроде бы чекер, который генерит XML-ку как результат, что с ним не так?

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
"Тесты должны быть перечислены в порядке возрастания их номеров в оригинальной задаче."

Как быть, если есть тесты с именем 01.in, A.in и preved.in?
Как здесь задать порядок возрастания?
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
It look like MM contest at TC :)
  • 13 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится
    No... In MM contest problem is always strictly determined and always have optimal solution that can be calculated if we have infinite time. In this contest you can only guess...
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Not really. There have been MMs where the problem is interactive (you are to make moves before you know all the information) and depend on randomness. In these cases no optimal solution exists. For example, the ChessPuzzle problem.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

        TC always describe random distribution and all ranges. So... optimal solution = solution that get best summary score for all possible input data (if you have infinite time you can bruteforce all possible next opponent's moves and taking into account their probability distribution choose the best variant).

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
in e09:
problem/Source/tester.dpr
problem/Source/TESTER.PAS

why .dpr is a checker, not *.pas?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    bacause there can be only one checker.

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    I suppose both of the answers are correct
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    If you want to use problem archive to judge some solution(s) you should decide which checker to use. You should choose exactly one. In this case many things point that tester.dpr is preffered:
    • tester.dpr is Delphi source, while TESTER.PAS is Borland Pascal program;
    • there is binary file tester.exe in the files.lst and it has name in lowercase like tester.dpr;
    • tester.exe is win32-executable
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Михаил, а с доступом к файлам точно все в порядке? У меня runtime_error при попытке прочитать какой-либо файл...
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
Объясните, почему у меня может быть рантайм, при попытке открыть файл из списка files.lst?
На локальной машине под виндоус 7 я читаю список строк из files.lst и затем пытаюсь их открыть с помощью  new FileReader(s); где s - это очередная строка из files.lst и все хорошо.

А на сервере рантайм=( (при этом сам files.lst видимо программа читает нормально)

Может, кто уже набрал не 0, скажет, как правильно читать файлы из files.lst?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Проверил на  OpenSuse
    тоже все работает, все семплы читаются, ошибки не выскакивают. А на codeforces RE при попытки доступ к файлам из files.lst получить(

    Как узнать, а чем ошибка?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      вроде перетестировали, теперь работает.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +15 Проголосовать: не нравится
        Наверное

        Если

        Редактировать сообщения

        То их получится не очень много :-)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Скажите, а при финальном тестирование, при равенстве кол-во пройденных тестов, будет ли учитываться корректность нахождения чекеров и решений?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Пройденность теста и обозначает в частности проверку корректности нахождения чекеров и решений.
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      Скажите , а почему тогда нарушается требование "Вывод должен содержать от одной до трех секций: секция тестов, секция решений и секция чекера (обязательной является только секция тестов)"???

      Насколько я понял, чекер тупо на равенства сравнивает ответ жюри и ответ участника, но ведь сказано, что обязательно для совпадения только секция тестов!
      • 13 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится
      • 13 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
      • 13 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
        Секция тестов является обязательной в том смысле, что она всегда должна быть в выходном файле. Всех остальных секций может не быть. Но это не значит, что их не надо выводить, совсем наоборот.
13 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится
Не в ту ветку ответил
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Здраствуйте, прошу всех тех кто часто бывает на этом сайте, заминусуйте меня пожалуйста....
  • 13 лет назад, # ^ |
      Проголосовать: нравится +11 Проголосовать: не нравится
    Таким нехитрым методом Bekas вполне может выйти в лидеры по вкладу :-)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А будут по окончанию выложены решения участников?

Или это будет закрытое имущество codeforces?

У нас тренировки внутриУрГУшные проходят на тимусе. 

Мне обычно лень разбираться в форматах и заливать :)

Круто было бы иметь инструмент. Было бы клёво, если б проект открытый был. 

P.S. Может я неверно что-то прочитал. Тыкните меня, если где-то это уже обсуждалось.

  • 13 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
    Цитата:
    Самое главное: код победителя будет оформлен в отдельную маленькую библиотечку, которая будет распространять по свободной лицензии.
    • 13 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
      Ваш пост я вижу пустым, он и есть пустой или это баг в браузере, или что-нибудь ещё?
      У меня Mozilla 3.6.16
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
        Они пустые (это был какой-то баг отправки комментария, связанный с хромом, из-под лисы все ОК).
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Получается, рейтинг, составленный на основе текущих 30 тестов, при определении победителей никак учитываться не будет?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится
    Ну как сказать. Финальные тесты - это 30 текущих + 20 дополнительных. Так что текущий рейтинг как бы намекает на то, кто победит, но не гарантирует. 
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А куда делась страничка контеста?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А каким образом создается файл files.lst?
Каким-либо автоматизированным способом или же Михаил собственными руками его заполняет?
Если он создается в ручную, то автоматизацию процесса с помощью данного парсера можно поставить под сомнение.
13 лет назад, # |
  Проголосовать: нравится -10 Проголосовать: не нравится
who can give me the idea to solve the first problem(A)?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Система тестирования висит, ребутните плиз.
13 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится
"The contest will last for two weeks and will be over on April, 15 at noon."

Please, be more precise (for example, provide the GMT time).
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Если нам попадается интерактивная задача (или таких в тестах нет?), то исходник программы, осуществляющей интерактивность, является чекером?
13 лет назад, # |
Rev. 2   Проголосовать: нравится +11 Проголосовать: не нравится
Я извиняюсь за излишнюю нетерпеливость, но когда будут результаты?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Who's the winner?
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
System testing competed. Tomorrow the contest winners will be announced!
===
Системное тестирование завершено. Завтра состоится подведение результатов!