Pull to refresh

Плагин Moj для участия в TopCoder SRM

Reading time4 min
Views5K

Вступление


Людям, которые увлекаются спортивным программированием, хорошо известны соревнования корпорации TopCoder. Среди них, пожалуй, самым популярным видом является Single Round Match, или SRM. Схема SRM'ов достаточно специфическая, и в чем-то неповторимая. Если кратко — сначала участники решают 3 задачи разных уровней сложности, потом некоторое время ищут ошибки у оппонентов, получая за это дополнительные очки.

Для организации таких соревнований TopCoder создали Java-апплет (TopCoder Arena). Также нашлись умельцы, которые для этой самой арены написали плагины, чтобы упростить жизнь себе и другим. Но установка последних часто вызывает трудности у начинающих SRM'щиков. Именно эта проблема стала мотивом для написания этой статьи.


С чего начать?


Начинать всегда нужно с самого начала, в данном случае — с установки арены. Как упоминалось ранее, арена — это Java-апплет. Следовательно, первое, что нам понадобится — это Java Runtime Environment (JRE) + Java Web Start (JWS), которые идут одним пакетом.

Установка Java

Шаг 1. Чтобы скачать Java, пройдите по ссылке www.java.com/ru/download/manual.jsp. Выберите нужный установочный файл из списка:


Шаг 2. Установите Java. На Вашем компьютере будут автоматически установлены необходимые компоненты, а именно JRE + JWS:




Установка TopCoder Arena

Шаг 3. Посетите сайт www.topcoder.com/tc.


В будущем на этом же сайте вы сможете заглядывать в календарь событий («Events calendar»), проверять рейтинг, брать участие в обсуждениях на форуме и многое другое. В данный момент нам нужна арена. В меню слева выберите «Competitions» — «Algorithm» — «Single Round Matches (SRM)» — «Launch Arena», после чего увидите примерно такое окно:


Примечание 1. Да, там написано, что у меня на установлен JWS, но на самом деле это не так. Просто он установлен не как отдельная составляющая, а идет в пакете Java со всем остальным.
Примечание 2. Пользователь Nicolette заметила, что после нажатия «Launch Arena» окошко с красной кнопкой может и не открыться. Вместо этого, по ее словам, сразу начнется загрузка «ContestAppletProd.jnlp». Что же, в конце концов, именно скачивание этого файла и является главной целью на данном шаге. Не пугайтесь, если что.


Жмите на большую красную кнопку, и Вам предложат скачать файл «ContestAppletProd.jnlp». Это и есть тот самый Java-апплет. Скачиваете и запускаете, в итоге увидите окно приветствия:


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

Установка и настройка плагина Moj


Шаг 4. Скачайте файлы плагина Moj. Найти их можно, например, на форуме TopCoder:
apps.topcoder.com/forums/;jsessionid=84612D3FBAD554FF37DD381DD857BC20?module=Thread&threadID=597911&start=0&mc=60
или скачать прямо отсюда:
github.com/downloads/lovrop/topcoder-moj/moj_4.16.zip
Распакуйте скачанный архив в любую удобную папку.

Подключение Moj

Шаг 5. В арене откройте окно настроек редактора («Options» — «Editor»):


В результате увидите окно:


Шаг 6. Напротив поля «Common ClassPath» нажмите кнопку «Browse». В появившемся окне перейдите в папку с распакованным плагином:


и выберите три *.jar файла:
  • Codeprocessor.jar
  • FileEdit.jar
  • moj.jar

Шаг 7. В окне настроек нажмите кнопку «Add». Открывшееся окно заполните следующими значениями:
  • Name: Codeprocessor2.0
  • EntryPoint: codeprocessor.EntryPoint
  • ClassPath: аналогично шагу 6 выберите 3 указанных *.jar файла.



В окне настроек появилась новая строка, соответствующая установленному плагину. Чтобы сделать его плагином по умолчанию, выставьте соответствующие галочки «Default» и «At Startup»:


Настройка Moj

Шаг 8. В окне настроек выберите строку, соответствующую Codeprocessor2.0, и нажмите кнопку «Configure». В появившемся окне нажмите кнопку «Add». В результате появится пустая (белая) строка, в которую нужно вписать «moj.moj». В поле «Editor EntryPoint» введите «fileedit.EntryPoint».


Шаг 9. Напротив поля «Editor EntryPoint» нажмите «Configure». В появившемся окне в поле «Enter directory to read/write problems to» введите путь к папке, в которой будут появляться шаблоны кода при открытии новой задачи.


Во вкладке «Code Template» предлагается ввести шаблон кода, который будет прописан в файл исходного кода. В качестве примера могу предложить свой (если будете копипастить — не забудьте предварительно выбрать язык С++): pastebin.com/kwt4Whp3


Шаг 10. Нажимаем «Save»:


В окне настройки Codeprocessor'а нажимаем кнопку «Verify». Если все прошло успешно и подключено правильно — должны получить сообщение о том, что все компоненты найдены:


Опять жмем «Save», получая попутно следующее предупреждение:




На этом настройка завершается.

Проверка плагина


Для проверки дееспособности Moj'а, в арене выбираем любую комнату для тренировки («Practice rooms»):


В интерфейсе комнаты в поле «Choose problem» выберите любую из 3 задач. К слову, там же сразу и увидите количества баллов, которыми оцениваются задачи.
Открыв задачу, вы увидите следующее окно:


Именно здесь вы можете прочитать условие, проверить Activity Log и убедиться, что Moj сработал. Для верности (и для тренировки), откройте код и напишите решение. К слову, одна из фич TopCoder'а: нужно написать не целую программу, а всего лишь класс. Данные подаются как аргументы метода класса, результат возвращается через значение метода. Moj — дописывает все (по шаблону), что находится вне класса. Благодаря этому вы можете, запустив программу, проверить свой код на тестах из условия, которые автоматически прописываются Moj'ем прямо в исходный файл.
Когда класс готов — нажимайте последовательно «Save», «Compile», «Test» (опционально), «Submit». На этом написание кода обычно завершается, и решение считается полученным (но не обязательно правильным — корректность проверяется во время системного теста, в конце соревнования).

Заключение


Соревнования TopCoder значительно отличаются от других, в том числе от стандарта АСМ. На изучение всех особенностей, о которых здесь не было даже упомянуто, может уйти довольно много времени. Тем не менее, главное — начать, а опыт придет со временем.
Tags:
Hubs:
Total votes 18: ↑15 and ↓3+12
Comments26

Articles