Вступление
Людям, которые увлекаются спортивным программированием, хорошо известны соревнования корпорации 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 значительно отличаются от других, в том числе от стандарта АСМ. На изучение всех особенностей, о которых здесь не было даже упомянуто, может уйти довольно много времени. Тем не менее, главное — начать, а опыт придет со временем.