Egor's blog

By Egor, 12 years ago, In Russian

UPD: немного поправил примеры

Некоторые из вас знают про мой плагин для Idea. Одной из его самых интересных/полезных частей является автоматическое создание конфигураций с запуском задачи на всех тестах для некоторых сайтов, а именно — Codeforces, CodeChef, Timus, E-Olimp и RCC. Некоторые другие плагины предоставляют похожую функциональность для других сред разработки и языков программирования. На текущий момент это реализовано за счет скачивания веб-страниц и их парсинга. Данный подход имеет сразу несколько минусов:

  • Повышается нагрузка на сервер (особенно в пиковое время вроде начала контеста)
  • Изменение в структуре веб-страницы приводит к необходимости исправлять парсер и выпускать новую версию. Кроме того, некоторые сайты не имеют четкой структуры оформления примеров (например, CodeChef) — приходится использовать эвристики. Некоторые соревнования — SN*S, OpenCup — используют pdf для задач, что делает невозможным (или, по крайней мере, очень трудным) их парсинг
  • Некоторые контесты (например, виртуальные) требуют логина для доступа к текстам задач. Доверять свои логин и пароль 3rd party софту — опасно

Для того, чтобы справится с этими проблемами необходима поддержка от администрации сайтов. Я предлагаю сделать следующее:

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

  • Иметь по фиксированному url (скажем, http://codeforces.com/contests/list.xml?key=my_codeforces_key) xml файл с мета-данными о доступных контестах, которые в случае обращения без указанного выше ключа сообщают о контестах, доступных для всех, а в случае его наличия, а в случае обращения с ключом — доступные конкретному человеку. При этом может сообщаться дополнительная информация. Пример:

<site>Codeforces</site>
<icon url="http://codeforces.com/favicon.png" />
<contest-list>
  <contest id="211">
    <name>VK Cup 2012 Finals</name>
    <name locale="ru">VK Cup 2012, Финал</name>
    <url>http://codeforces.com/contest/212/contest.xml</url>
    <status solved="4" attempted="4" />
  </contest>
  ...
</contest list>
  • Аналогично — для контеста иметь описание в примерно таком формате:
<contest id="211">
  <name>VK Cup 2012 Finals</name>
  <name locale="ru">VK Cup 2012, Финал</name>
  <task id="211A">
    <name>Privatization</name>
    <name locale="ru">Приватизация</name>
    <url>http://codeforces.com/contest/211/problem/A.xml</url>
    <status solved="false" attempted="false" />
  </task>
  <task id="211B">
    <name>Polycarpus is Looking for Good Substrings</name>
    <name locale="ru">Поликарп ищет хорошие подстроки</name>
    <url>http://codeforces.com/contest/211/problem/B.xml</url>
    <status solved="true" attempted="true" />
  </task>
  ...
</contest>
  • Ну и наконец — для задачи:
<task id="211B">
  <name>Polycarpus is Looking for Good Substrings</name>
  <name locale="ru">Поликарп ищет хорошие подстроки</name>
  <status solved="false" attempted="false" />
  <input file="false" />
  <output file="false" />
  <memory-limit value="256" />
  <test-type value="single" />
  <test-case id="0">
    <input>aaaaa\n2\na\na\n</input>
    <output>1\n1\n</output>
  </test-case>
  <test-case id="1">
    <input>abacaba\n3\nac\nba\na\n</input>
    <output>1\n2\n4\n</output>
  </test-case>
</task>

Задача данного поста — понять, считает ли коммьюнити введение подобного единого стандарта хорошим шагом и помочь сформулировать полную спецификацию формата

  • Vote: I like it
  • +65
  • Vote: I do not like it

»
12 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I have installed beta 10. But don't see launch topcoder button anywhere.

Also was trying to run a codeforces task and getting this error.

  • »
    »
    12 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    This thread is not about CHelper plugin. I would answer in pm