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

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

Как говорится "Мы строили, строили и, наконец, построили". Или во всяком случае близки к этому.

19-го января 2012 года в 12:00 мы открываем подпроект "Тренировки" (по-английски мы назвали его "Gym", т.е. спортзал). Если коротко, то его цель предоставить сервис для того, чтобы на Codeforces вы могли не только участвовать в соревнованиях и обсуждать их, но и удобно тренироваться и тренировать.

В самом деле, при всем разнообразии online judges в мире, толкового сервиса для проведения тренировок не существует. Что хочется от такого сервиса:

  1. Наличие базы виртуальных контестов, составленных преимущественно из прошедших официальных соревнований.
  2. Возможность интегрировать результаты прошедших соревнований в виртуальные контесты, чтобы была возможность тренироваться "против" официальных участников.
  3. Возможность в любое время дня и ночи поучаствовать в тренировке, не боясь, что что-то сломается и сервер ляжет. Короче, надежность.
  4. Возможность как писать виртуальные контесты, так и дорешивать задачи.
  5. Возможность участвовать как индивидуально, так и в составе команды.
  6. Возможность менять состав при сохранении команды.
  7. Возможность просмотра разнообразных статистик и истории участий, возможность составления и публикации отчетов по выбранным участникам/контестам.
  8. Возможность тренеру самостоятельно добавить виртуальный контест, если такого еще нет. Процесс должен быть простым, надежным и максимально автоматизированным. Возможность запарсить таблицу результатов прошедших соревнований и добавить попытки официальных участников в виртуальный контест.
  9. Возможность смотреть решения других участников/тесты, если сам решил эту задачу.
  10. Возможность найти тренировку по вкусу, т.е. подбор по параметрам.

Проект Codeforces::Тренировки ставит перед собой цель выполнить все эти требования. Уже сейчас почти все из перечисленного доступно, а что таковым не является, то будет.

Поехали! Все картинки кликабельны.

Для участников

Перейдите в раздел "Тренировки" и выберите контест по вкусу. Обратите внимание на звездочки, они показывают сложность тренировки. Заказывайте виртуально контест (как это можно сделать с обычными раундами Codeforces) и приступайте к решению! Вам будут противостоять как другие виртуальные участники, так и участники-призраки : Это те, кто принимал участие когда-то давно в этом контесте, а в систему Codeforces попал в результате анализа таблицы финальных результатов прошедшего контеста.

Пожалуйста, если вы видели эти задачи или не собираетесь серьезно и самостоятельно решать тренировку, то не решайте ее. Единственный контест, на котором можно потестировать систему - это "2010 Codeforces Beta Round #1 (тренировка)", но и там тренеры тоже будут вычищать неадекватные участия.

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

Для тренеров

Мы выделили отдельную роль - тренер. Тренером может стать любой красный участник, который готов прикладывать усилия к наполнению и поддержанию раздела "Тренировки". Обязательно прочтите правила и обязательства. Не становитесь тренером, если вы не согласны следовать им. В любой момент времени можно включать/выключать тренерский режим.

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

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

  • полные тесты (если используются генераторы, то тесты необходимо предварительно сгенерировать), включая файлы с ответами на каждый тест;
  • авторские решения;
  • чекеры;
  • таблица финальных результатов в виде традиционного ACM-ICPC монитора в формате HTML (достаточно ссылки, еще можно использовать .dat-файл из TestSys).

Авторские решения не обязательны, но очень желательны. Чекеры нужны только, если ответ неоднозначен, должны быть совместимы с testlib в плане аргументов командной строки (checker-file input output answer) и возвращаемых кодов (OK - 0, WA - 1 и 2, FAIL - любое другое значение). Финальные результаты тоже не обязательны, но с ними будет значительно лучше! Да, у нас есть супер-интеллектуальный парсер, который умеет превращать в лог участия почти любой HTML ACM-ICPC монитор.

Форма "Новая тренировка"

Итак, нажмите "Создать новую тренировку". Если у контеста нет русского или английского названия, то просто не вводите его. Время начала можно опустить, но если его ввести, то можно сделать тренировку не для виртуального участия, а полноценный контест (который потом будет доступен виртуально). Уровень доступа оставляйте "приватный" пока контест не будет полностью готов. После этого его можно будет опубликовать.

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

  • 2008-2009 Всероссийская командная олимпиада школьников (ВКОШП 08)
  • 2001-2002 ACM-ICPC Northeastern European Regional Contest (NEERC 01)
  • 2008-2009 Winter Petrozavodsk Training Camp, Saratov SU Contest
  • 2010-2011 ЛКШ, августовская смена, подборка задач на ДП

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

Codeforces Contest Wizard

Вкладка Contest

Итак, вы заполнили форму "Новая тренировка", нажали создать и оказались внутри интерфейса контеста. Следующий этап - его надо наполнить задачами и добавить участников-призраков и их попытки из финальных результатов прошедшего контеста. Внимательно прочтите синий бокс справа и откройте Codeforces Contest Wizard. Первый раз он будет открываться очень неспешно, но многое покешируется.

Внимательно прочтите все то, что написано на его первом табе. Там немного текста, и он будет полезен. Прочли? Тогда жмем "Next".

На табе "Contest" можно подправить длительность тренировки и выбрать файл с результатами, который будет обработан системой. Выберите файл (HTML-документ или протокол TestSys в формате dat) или ссылку на него, потом нажмите "Parse". Если все прошло хорошо, то автоматически должны заполниться боксы "Problems" и "Teams". Если этого не произошло, то формат не поддерживается. В таком случае сообщите нам об этом и добавьте задачи по одной, используя "Problems:Add". Если у задачи нет английского или русского названия, оставляйте их пустыми.


До обработки таблицы результатов

После обработки таблицы результатов

Далее нажимайте "Next", приложение добавит несколько табов - по одному на задачу.

Вкладки c задачами

На каждой из этих вкладок убедитесь, что вы ввели настоящее название задачи в Problem name. Оставляйте пустым название, если для этого языка у задачи нет названия. Дальше нажмите большую кнопку сверху "Select problem files and analyze problem". В диалоге выберите все те файлы, которые имеют отношение к задаче: тесты, чекер, решения. Можно выбрать чуток лишнего, ничего страшного. Обычно можно просто выделить весь каталог с задачей (если она в отдельном каталоге). Жмем OK.

Дальше начинается магия. Используя модифицированный код из http://mirror.codeforces.com/blog/entry/1637, приложение определяет, какие из файлов являются тестами, решениями, определяет чекер. Далее первый тест, решения и чекер (если есть) отправляются на анализ в Codeforces. Там осуществляется проверка принятых данных.

  • Путем перебора компиляторов, учитывая расширение, определяется компилятор для каждого исходника. Здесь Free Pascal приоритетнее Delphi, а GNU g++ приоритетнее Microsoft Visual Studio C++. Если не получается скомпилировать исходник, то для него автоматически определятся необходимые ресурсы и, если надо, происходит модификация кода. Например, старые решение на C++ могут не компилироваться из-за неправильных include-ов, тогда include-ы будут добавлены автоматически.
  • Магия продолжается. Для каждого решения автоматически определяется файл для ввода-вывода. Поддерживаются stdin/stdout, input.txt/output.txt, *.in/*.out и их комбинации. Для всех решений имена файлов ввода-вывода должны совпадать.
  • Затем происходит тестирование каждого решения на первом тесте, от чекера ожидается код возврата 0. Используется сравнение по словам с игнорированием пробелов/переводов строк, если чекер не задан.
  • Если все нормально, то чекер запускается на самом тесте и ответе на него как на выводе решения. Конечно, ожидается OK (т.е. код возврата 0).
  • Последний штрих. Надо проверить, что чекер в самом деле умеет выводить что-то, кроме OK. Осуществляется его запуск на первом тесте и случайной строке в качестве вывода решения. В данном случае ожидается вердикт WA (т.е. код возврата 1 или 2).
  • Итак, все пункты выполнены. Можно верить, что заданные файлы действительно похожи на решения, соответствуют тестам, а чекер похож на чекер. Обработанные данные (возможно, измененные исходные тексты + ресурсы типа testlib.h) возвращаются обратно в Codeforces Contest Wizard.

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

Вкладка "Attachments"

Здесь все попроще. Надо добавить файлы с условиями и дополнительные материалы. Рекомендуется добавлять условия в виде одного файла с текстами всех задач (например, PDF или DOC). Если условия разложены по нескольким файлам, то я обычно составляю новый DOC-файл с полным проблемсетом. Старайтесь всегда ставить нумерацию страниц в условиях, добавляйте верхний колонтитул с названием контеста.

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

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

Наконец, вкладка "Package"

Дело подходит к концу, нажимаем кнопку "Package". Система атоматически валидирует все задачи (см. пункт "Вкладки c задачами") и, если все нормально, предлагает сохранить пакет контеста. Удобнее всего - это залить его в автоматическом режиме прямиком на Codeforces. В этом случае система откроет FTP-соединение и скопирует файл contest.zip в корень папки контеста. Там уже этот файл будет автоматически (да-да, снова магия) разархивирован.

Если хотите, вы можете сохранить файл локально (укажите имя с расширение .zip) и посмотреть что там и как. Позже это файл под названием contest.zip можно будет залить по FTP в Codeforces, но уже в ручном режиме.

Конечно, проще залить файл в Codeforces автоматически. И насладиться такой приятной надписью.

Возвращаемся на Codeforces

В интерфейсе контеста есть важная ссылка "Обновить соревнование". Дело в том, что все изменения которые вы можете делать и куда заливает данные Codeforces Contest Wizard - это песочница. Чтобы обновить состояние контеста по текущему состоянию песочницы, надо нажать "Обновить соревнование". Для больших контестов это не очень быстрое дело, так как Codeforces опять валидирует все и вся, чтобы минимизировать возможность ошибки. Кроме того, в контест добавляются команды-призраки : После нескольких десятков секунд ожидания вам сообщат, что соревнование было обновлено. Возможно, появится сообщение об ошибке - внимательно его прочтите, и попробуйте разобраться в чем дело. Вероятно, что-то не так с файлами контеста.

В любой момент вы можете зайти по FTP (используя хэндл-пароль от Codeforces) и обновить какие-то файлы вручную. Обратите внимание, что для всех дескрипторов используется кодировка UTF-8, так что сохраняйте данные только в ней. Если что-то правите вручную, будьте внимательны и осторожны. После обновления состояния контеста вы увидите, что список задач обновился, а результаты пополнились такими веселыми призраками.

Мы в минуте от окончания подготовки. Осталось послать все авторские решения в систему, настроить ограничения по времени / памяти. Вы думаете это ужасно утомительно посылать авторские решения? Если в контест 10 задач, по 3-6 авторских на задачу, то надо отослать 30-60 файлов. Нет! Это совсем просто! Идем в раздел "Администрирование", нажимаем "Послать все авторские решения" и наслаждаемся результатом в разделе "Мои посылки".

Осталась деталь - установить ограничения. Либо воспользуйтесь формой редактирования задачи, либо установите ограничения на время непосредственно со страницы "Мои попытки", используя время работы какого-нибудь авторского решения. В таком случае ограничение по времени ставится по формуле RoundUp(3*T), где T - это время работы решения, а RoundUp - функция округления вверх до целого количества секунд. Мы считаем, что это неплохая эвристика для установки ограничения времени. Зачастую лучше даже поставить большее значение, а вот меньше ставить крайне не рекомендуется.

На этом подготовка контеста заканчивается, его уровень доступа можно сделать "защищенным" и показать другим тренерам. Если все нормально, то можно открывать и делать публичным. Чтобы проинформировать общественность о новой тренировке, можно написать пост одноименный подготовленному контесту.

Заключение

В конце хочется добавить, что пока это даже не бета, но мы приложим усилия, чтобы быстренько сделать сервис по-настоящему удобным и полезным. Нами проделана большая работа по привлечению магии на Codeforces, чтобы сделать процесс подготовки тренировки простым и надежным. Надеюсь, вы это оцените. Пожалуйста, не пишите сюда в комментарии конкретные баги или feature requests. У нас совсем скоро будет специальный пост для публикации в нем багов и пожеланий о системе, пишите туда. Здесь же, самое место устроить общее обсуждение системы.

P.S. Чуть позже я разбавлю текст скриншотами, будет веселее.

Удачных тренировок, MikeMirzayanov
  • Проголосовать: нравится
  • +419
  • Проголосовать: не нравится

»
13 лет назад, # |
  Проголосовать: нравится +23 Проголосовать: не нравится
А какая будет защита от неадекватных красных участников? :)
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится
    наверное, все будет строиться на доверии, ведь и сейчас существуют теги, которые в приципе надо тоже как то огораживать от вредителей (чтобы они их тупо не удаляли), но насколько можно видеть, и без того такой хренью никто не занимается
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +26 Проголосовать: не нравится
    Предполагается что все красные адекватные :-)
»
13 лет назад, # |
Rev. 2   Проголосовать: нравится +16 Проголосовать: не нравится

А я как раз недавно думал "интересно, а будет ли парсер с того давнего марафона".
Звучит потрясающе. Думаю, будет тоже замечательно.
Возникло несколько вопросв:

  1. Будет ли когда-нибудь поддержка IOI-style контестов с баллами?
  2. По какой системе проводятся тренировки?
  3. Где все чудо доступно? :)
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Все это чудо доступно по ссылке Тренировки, которая уже несколько дней то появляется то исчезает.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +14 Проголосовать: не нравится
      Кстати, я нашёл ответ на свой вопрос: "19-го января 2012 года в 12:00"
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +21 Проголосовать: не нравится
    Тренироваться можно только в формате АСМ. По крайней мере в ближайшем будущем
»
13 лет назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится
Ух ты, круто...
А всё это дело будет интегрировано с polygon'ом?
Ещё такой вопрос: можно ли будет делать тренировки для фиксированного набора участников, или любой созданный контест обязательно становится публичным?
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +37 Проголосовать: не нравится
    У тренировки будет 3 области видимости: public private и protected :-)
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Если контест сделан в polygon то создавать тренировку намного проще
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Насколько проще? Можно будет начинать с пункта "залейте на сервер contest.zip"?
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Да, будет можно. Только не забывайте еще про таблицу результатов, без нее скучный контест получится.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Нет, либо тренировка будет открыта только создателю (private), либо тренировка будет открыта только тренерам (protected), либо это публичная тренировка. В данном случае, это не техническая ограниченность системы, а концепт. Очень не хочется, чтобы в результате все разбрелись по своим usergroups и многократно пересоздавали уже добавленные тренировки. Кажется, причин скрывать тренировку довольно мало :), а, как известно, "вместе веселее"!
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится
      Возможно логичнее сделать возможность, делать тренировку на группу лиц, которая после конца контеста становится открыта всем в режиме дорешивания/виртуального участия.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится
      Мне кажется 19-го числа в 12 00 будет порядка 100-200 "Hello, World"-контестов. Надеюсь, они не все будут видимыми для всех.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Интеграция с Polygon конечно будет. Сейчас пока one-click-интеграции нет. Архитектурно все для этого заложено. Просто неполигонизированных контестов значительно больше, а визард должен предоставить простой способ структуризации существующих архивов прошедших контестов.
»
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
созданный контест будет доступен только определенному кругу людей? либо всем желающим?
»
13 лет назад, # |
Rev. 3   Проголосовать: нравится +4 Проголосовать: не нравится

Тренировки могут создаваться только тренерами, да?

P.S. Полностью поддерживаю yeputons насчет IOI-style контестов. Было бы довольно интересно, особенно для школьников, которых на CF немало ^_-
»
13 лет назад, # |
  Проголосовать: нравится +18 Проголосовать: не нравится
Если добавить такую несложную фичу, как вход по паролю, можно будет проводить собственные контесты на Codeforces.
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
> Возможность смотреть решения других участников/тесты, если сам решил эту задачу.

А что будет с контестами вроде полуфиналов и части четвертьфиналов NEERC'а? Авторские решения и тесты доступны на официальных сайтах -> их можно переписать+закинуть в дорешивание, или просто закинуть. Я бы предложил для таких контестов просто сделать кнопочку "заблокировать виртуальное участие и открыть чужие решения" - не будет повода заниматься неблагодарным делом, описанным мной выше.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +15 Проголосовать: не нравится
    А какая разница, будет ли кто-то сабмитить чужие решения или нет? Конечно, если много людей пойдет по этому пути, то таблица результатов исказится и это может повлиять на тех, кто в дальнейшем будет писать виртуальный контест. Но если кто-то и будет заниматься подобным, то лишь единицы. В крайнем случае, их можно и руками отловить. Ведь за первое место в виртуальной турнирной таблице никаких призов нет, рейтинг тоже не дают. Не вижу повода из-за этого беспокоиться.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вы прочитали мой пост по диагонали :). Он про засылание чужого кода не в виртуальные контесты, а в дорешивание.
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +15 Проголосовать: не нравится
        Ну так тем более. Это ведь ничем не помешает другим участникам. Если кто-то хочет - пусть засылает.
        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится
          Просто, к примеру, я сам очно участвовал в NEERC'е, и мне хочется посмотреть чужие решения на те задачи, которые мы не решили (предполагаем, что я уже самостоятельно с ними намучился). В первую очередь я полезу на neerc.ifmo.ru, посмотрю, что есть там. Потом выбор: придумывать свое, переписывать по аналогии с авторским и скопипастить авторское. Бывает, что хочется сначала посмотреть кучу чужих решений, а потом написать самостоятельно. В таких случаях придется копипастить. С моей точки зрения лучше, когда тебя делать это не заставляют. В-общем, вопрос не стоит такой оживленной дискуссии :).
          • »
            »
            »
            »
            »
            »
            13 лет назад, # ^ |
              Проголосовать: нравится +9 Проголосовать: не нравится
            Я уже очень давно хочу посмотреть СВОЁ решение задачи F NEERC 2009, но так и не смог добиться от Станкевича своих сабмитов по этой задаче. У нас -24, хотя идея решения нам была очевидна с самого начала, то ТЛ то ВА был на контесте.
»
13 лет назад, # |
Rev. 2   Проголосовать: нравится +27 Проголосовать: не нравится

Это нереально круто.

Хотелось бы узнать относительно старых Петрозаводсков, права на контесты авторам принадлежат?

Если да, то вопрос к авторам, планирует ли кто-то добавлять в открытый доступ?

Спасибо.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +46 Проголосовать: не нравится
    Мы свои добавим. Есть согласие от Петрозаводского ГУ. Надеюсь, что другие университеты не будут против и поддержат инициативу.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Некоторое количество старых Петрозаводских сборов можно порешать на http://acm.petrsu.ru (как — там написано в разделе "Помощь"). Там пока не очень много, но будет постепенно пополняться (с разрешения авторов, конечно).

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
У моего наставника по программированию нет "красного аккаунта" на Codeforces, но тренировочный контест очень хотелось бы написать именно здесь, ибо я не знаю других мест, где это можно сделать. Мой учитель как-нибудь, не будучи красным, может ли "залить контест" для его прорешивания командой( 2 человека как минимум)?
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Пока нет, но совместно с наставником вы сможете выбрать подходящий контест из списка публичных.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Но в случае чего, я могу попросить обладателя "красного аккаунта" залить определенный контест, составленный "некрасным"?
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Да, под его ответственность о качестве заливаемого контеста.
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +116 Проголосовать: не нравится
        Отправь смс на короткий номер и получи доступ к тренировкам.
»
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
А что будет происходить с теми, кто опустится из красного? Отберут права быть тренером?
»
13 лет назад, # |
  Проголосовать: нравится +30 Проголосовать: не нравится
This is a revolution, very exciting one. Thank you, Mike and the Codeforces team.
»
13 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится
I saw a glimpse of the gym two nights ago but was disapointed in the morning when it had disappeared.The interface of the GYM is just amazing.You can select the level of the toughness of the problems and then work them out.thanks to Mike Mirzayanov and the whole codeforces team for such a wonderful platform they have given us.I am sure that if codeforces continues to inovate and develop it has been doing since its birth ,one day it will rule the world in terms of coding platforms. And that day is not far :)
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Sounds good! Looking forward to it!
»
13 лет назад, # |
  Проголосовать: нравится -9 Проголосовать: не нравится

положа руку на сердце, я ставлю под сомнение, что данное программное обеспечение будет достаточно эффективным

snarknews неоднократно говорил о низком качестве петрозаводских контестов, что уж говорить о контестах из менее "надёжных" источников?

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

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +18 Проголосовать: не нравится
    Со своей стороны мы приложим к этому максимум усилий. Однако и участники могут и должны оказывать нам содействие, сообщая о багах системы, некорректно парсящихся форматах результатов соревнований и проч.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +32 Проголосовать: не нравится
    Качество ПЗ-контестов - это всегда лотерея.
    Вообще я помню, что Михаил Мирзаянов читал лекцию в ПЗ о том, как надо составлять контесты. Возможно, стоит написать пост или даже серию постов о том, как правильно и как неправильно делать задачи и контесты.
»
13 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Such a great news and feature! Looking for more of it :-)
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Now I have read all of the passage, it's really a powerful system for training, thank all of you!
»
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
В связи с переносом первой тренировки возник вопрос - как будет разруливаться то, что несколько тренировок могут идти одновременно (в теории), нагружать сервер, но при этом давать права на перевод в безопасный режим вроде как не очень хорошо?
Или пока что надежда на то, что будет участвовать небольшое количество участников одновременно?
»
13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
Coders could add regional ACM ICPC contests from their respective regions. This would be extremely helpful for team training as you would know how you compare to the best teams from your region. 
»
13 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
May be its better to download *.pdf, but not *.doc ?
»
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Решил, простите, тупой)

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ну уж не в главный пост по проекту это писать. Примеры и первый тест в случае тренировок не всегда совпадают.
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
При попытке участия виртуально на "2008-2009 Всероссийская командная олимпиада школьников по программированию (ВКОШП 08)" при открытии задач появляется сообщение "Access denied".
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Общий вопрос:

Что вообще значит, что виртуальный контест проходит с 12 30 до 3 30? Виртуальный подразумевает "пришел - увидел - написал". А сейчас тренировка проходит в определенное время. И потом можно будет виртуально тоже дописывать. Это единичный тестовый случай и вообще контесты будут просто добавляться и будут исключительно виртуальны?

И еще одно: Я так понимаю, система КФ всегда при ВА 1 не засчитывает попытку. Что не верно в последнем контесте, вроде бы...
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    На самом деле это решение создателя. Он может назначить тренировку на определенное время, и тогда она будет запущена именно в таком режиме. После ее окончания ее можно решать как типичный виртуальный контест. Наверное, большинство тренировок будут добавляться как простые вирт. контесты, поживем-увидим.

    Да, это лучше написать в трекер.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ага, спасибо.
      Еще такой вопрос. Я так понимаю, в архив эти задачи идти не будут, но тому, кто написал ВК, можно будет видеть сабмиты остальных участников? (Кроме призраков)?
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится
        Там пока просто нет архива, наверное сделаем. Наверное, сейчас можно дорешивать из интерфейса контеста. Если ты решил задачу (не важно как), то можно смотреть чужой код. Это уже работает по doubleclick в ранклисте.
        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Ага, спасибо, про даблклик уже понял. А про архив.. задачи ведь там с большой вероятностью будут дублироваться, да и при хорошем стечении обстоятельств их там будет просто немеряно. И еще не очень ясно, почему у нерешенных задач нельзя смотреть код по завершении контеста. Как раз из-за дублирований, или тут другая мотивация?
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Добрый вечер. Сразу прошу прощения за предложение, которое уже возможно реализовано, но возможности посмотреть на новую фитчу Codeforces нету (Сессия => нету свободного времени, а регистрироваться на теренировку, чтобы потом ее не решать, не хочется).

К делу. Хотелось бы галочку, при нажатии которой в твоем мониторе отображались бы только участники с оригинального (залитого с архивом) монитора.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Спасибо. Такое надо писать в трекер. Да я понял, надо подумать. Можно в самом деле заменить чекбокс "показывать неофициальных" на какой-нибудь выпадающий список с большим числом опций.
»
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
а можно ли как то просматривать тесты, скажем,  если ты решил задачу? 
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да, пока правда можно только использовать ftp. Зайдите на taskbook.codeforces.ru по своему логину-паролю. И идите в контест->задачу с нужными айдишниками, там будут тесты.
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Somebody please help me.May be I am not getting what I am expecting or I have misread something.
I am finding The gym is just like the other "virtual contest".Its just seeing the problems and answering them.How can I know the solution of a particular problem and when does the coach come to help me??
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Select the gym, click "Enter". In the right section click "Register for practice". Now click on the airplane near the problem name - that is how you can send you code for checking. And it is not virtual contest.

    There is not any coach. You can ask you question in the blog or send a private message to author of contest.
    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      So how is it different from a virtual contest apart from the thing that we can filter the contest we are participating ??I mean how is it going to help me "differntly"??
»
13 лет назад, # |
  Проголосовать: нравится +26 Проголосовать: не нравится
Как насчет создать тренировочный контест, на котором можно будет посдавать стандартные алгоритмы (с сайта e-maxx, например)? В данном случае подразумевается, что сдавать их надо будет долго в режиме дорешки, виртуальность тут ни к чему. Конечно, такое удобнее сделать, если контест можно редактировать по ходу дела, добавляя в него новые задачи (а можно?).

Можно создать не один, а много тематических контестов: задачи только на строки, только на ДП, только на графы. Причем задачи должны быть учебными или баянистыми, зачем новые хорошие задачи портить?
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +14 Проголосовать: не нравится
    Будет замечательно, если такое будет.
    Статья на e-maxx - и в точности на неё задачу.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится -11 Проголосовать: не нравится

    У саратовских такой сайт есть, так что не думаю, что они будут делать какие-либо телодвижения в эту сторону:(

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I downloaded the "wizard.jnlp", but could not run it. It says, "Fatal: Read Error: Could not read or parse the JNLP file". Detail: net.sourceforge.jnlp.LaunchException: Fatal: Read Error: Could not read or parse the JNLP file. at net.sourceforge.jnlp.Launcher.fromUrl(Launcher.java:491) at net.sourceforge.jnlp.Launcher.launch(Launcher.java:283) at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:202) at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:51) at java.security.AccessController.doPrivileged(Native Method) at net.sourceforge.jnlp.runtime.Boot.main(Boot.java:168) Caused by: net.sourceforge.jnlp.ParseException: Invalid XML document syntax. at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1274) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:204) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:188) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:173) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:159) at net.sourceforge.jnlp.Launcher.fromUrl(Launcher.java:482) ... 5 more Caused by: net.sourceforge.nanoxml.XMLParseException: XML Parse Exception during parsing of the XML definition at line 1: Unexpected end of data reached at net.sourceforge.nanoxml.XMLElement.unexpectedEndOfData(XMLElement.java:1094) at net.sourceforge.nanoxml.XMLElement.readChar(XMLElement.java:877) at net.sourceforge.nanoxml.XMLElement.scanWhitespace(XMLElement.java:596) at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:500) at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:464) at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1270) ... 10 more Caused by: net.sourceforge.jnlp.ParseException: Invalid XML document syntax. at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1274) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:204) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:188) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:173) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:159) at net.sourceforge.jnlp.Launcher.fromUrl(Launcher.java:482) at net.sourceforge.jnlp.Launcher.launch(Launcher.java:283) at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:202) at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:51) at java.security.AccessController.doPrivileged(Native Method) at net.sourceforge.jnlp.runtime.Boot.main(Boot.java:168) Caused by: net.sourceforge.nanoxml.XMLParseException: XML Parse Exception during parsing of the XML definition at line 1: Unexpected end of data reached at net.sourceforge.nanoxml.XMLElement.unexpectedEndOfData(XMLElement.java:1094) at net.sourceforge.nanoxml.XMLElement.readChar(XMLElement.java:877) at net.sourceforge.nanoxml.XMLElement.scanWhitespace(XMLElement.java:596) at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:500) at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:464) at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1270) ... 10 more Caused by: net.sourceforge.nanoxml.XMLParseException: XML Parse Exception during parsing of the XML definition at line 1: Unexpected end of data reached at net.sourceforge.nanoxml.XMLElement.unexpectedEndOfData(XMLElement.java:1094) at net.sourceforge.nanoxml.XMLElement.readChar(XMLElement.java:877) at net.sourceforge.nanoxml.XMLElement.scanWhitespace(XMLElement.java:596) at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:500) at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:464) at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1270) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:204) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:188) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:173) at net.sourceforge.jnlp.JNLPFile.(JNLPFile.java:159) at net.sourceforge.jnlp.Launcher.fromUrl(Launcher.java:482) at net.sourceforge.jnlp.Launcher.launch(Launcher.java:283) at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:202) at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:51) at java.security.AccessController.doPrivileged(Native Method) at net.sourceforge.jnlp.runtime.Boot.main(Boot.java:168)

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Please, write me in talks.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I don't know whether you're using OpenJDK, but this is pretty much what happens there. You should use Sun's Java implementation under Linuxes and such.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I tried to use Sun Java 6 Web Start to open it, but I failed as well.

      Previously, I used IcedTea Java Web Start to open it.

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

Прошу реализовать возможность просмотра чужого кода после окончания тренировки / виртуального участия вне зависимости от того, сдал ты задачу или нет. Ну или хотя бы возможность просмотра теста, на котором падает задача.

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

Поломалось скачивание условий в тренировках.

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I don't know, may be it is not appropriate to write here. Today i tried to virtually participate in 2011-2012 Wrocław Short Training Contest (contest 7) ,but i couldn't download the problem statement. Each time it says can't send statement. What is the problem?

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А куда исчез список последних тренировок, написанных виртуально? У меня их было штук 10, а осталась одна. Кроме того, тренировки, написанные в команде, но если на тренировку тебя регистрировал сокомандник, не отображаются, а хотелось бы наоборот.

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Последнее время не могу зайти на ftp сервер в любую тренировку codeforces gym. У меня одного такая проблема? Как её решить?

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

Лучшего места не нашел, поэтому напишу сюда.

Решил добавить пробную тренировку с парой задач для дорешки. Вроде все просто: создал, нажал "добавить задачу", открылся Wizard. Дальше добавил задачу, дал ему директорию, он сам все распарсил. Дальше делаю Package, он вроде его сделал(76 МБ) и предложил залить сразу на сервер, что я конечно и сделал. Он вроде его загрузил, написал, что все прошло успешно.

И вот тут сюрприз: жму обновить соревнование, а он пишет, что не может извлечь ни одной задаче. Перехожу в taskbook — в директории этой тренировки ftp все как по умолчанию, а в contest.dat 0 задач.

Кто-нибудь сталкивался с подобной проблемой? Может я что-то забыл сделать?(Хотя все вроде интуитивно и однозначно). Пробовал несколько раз, результат тот же. Локально contest.zip сохраняет, выглядит адекватно.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Там вот в чем дело. При нажатии "Добавить задачу" визард открывается именно в режиме редактирования (т.е. чтобы добавить/изменить задачу) в готовом контесте. В таком случае на выходе визарда получается частичный пакет контеста. Мы поправим, чтобы в случае изначально пустого контеста визард запускался в обычном режиме.

    Вам надо нажать "запустить визард" в голубом сайдбаре справа, там где инструкция написана.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Можно узнать, в мэшапы можно можно добавлять призраков? Если да, то каким образом? Есть поле для ввода Ghosts в администрировании, но что там писать без понятия. Где можно найти информацию об этом?

И еще по поводу инструкций на сайте polygon, в правом верхнем углу есть ссылка на "help", которая не открывается.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Вероятно, туда надо вставлять содержимое dat-файла. Потому что если попробовать просто нажать Setup, то будет ругаться на то, что не найден спецсимвол dat-файла или что-то такое. Формат этих файлов очень прост, достаточно зайти по FTP и посмотреть в тренировках.

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Более-менее разобрался, но один вопрос остался по этому формату: Объявление участника: @t 0,0,1,"vepifanov" Первое — порядковый номер, но почему то далее в посылках нумерация участников с 1... Что означает второе и третье число?

      И еще вопрос по взаимодействию полигона и мэшапов: Если я в полигоне создал соревнование, то можно ли его превратить в мэшап, кроме как создать мэшап и добавить туда задачи по одной?

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

А система Polygon совместим с codeforces тренировками?

Я создал на Polygon-е тестовый контест с одной задачей, в которой возможено получить неполный балл за каждый тест.

Код чекера

Код валидатора

Код решения

Добавил я различных тестов к ним. Прошёл верификацию и уже думал, что мои мучения окончены. Но не тут-то было.

Я скачал архив с задачей из Polygon-а и попытался скормить её wizard-у. Этот wizard оказался не таким уж волшебным и распознал фалы тестов чекера как тесты к задаче, а настоящие тесты — нет. К тому же, судя по списку типов, он не в курсе что такое Валидатор. Несмотря на то, что я исправил разметку файлов, он всё равно не смог залить задачу.

Ошибка Wizzard-а

Затем я залил по FTP содержимое задачи в папку problems/A. Откатил обратно файл contest.xml (к счастью я сохранил его копию) и руками прописал в нём путь к задаче и условию. Чуда не произошло.

Текст ошибки

Что я делаю не так? Судя по этому посту создать подобную тренировку должно быть возможно.

UPD

Здесь мне объяснили, что нужно в Polygon-е добавить в Contest developers пользователя с именем "codeforces", после этого импорт по дескриптору задачи заработал.

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Не могу найти пост "как стать тренером?" Можете кинуть, пожалуйста, ссылку?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

How to add attachments to GYM contests?

I don't mean statements attachments. I mean additional files which are related to the contest but are not problem statements.

In Codeforces Contest Wizard, there is an option to add "Resources: tutorials, slides, etc." under the Attachments tab. I have done this and have uploaded the package to Codeforces Taskbook automatically. I check via FTP that the files are indeed inside the sandbox/files folder. However, unlike problem statement attachments, if I update the contest in GYM, these other attachments don't show up. I can't manually add them either because I don't know the URLs of these files.

I also know that it's possible to add attachments linking to external services like Google Drive, but since my attachments are already living in Codeforces servers somewhere (using Taskbook), I'm thinking there has to be a way to access and link them from a GYM contest. On reading the section about attachments in this blog, it seems it must be possible, but I'm not sure.

I can't find this information anywhere and already wasted some time tinkering. Has anyone tried this before? Can anyone help?