Вступ
Людям, які захоплюються спортивним програмуванням, добре відомі змагання корпорації 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. Натисніть кнопку «Browse» навпроти поля «Common ClassPath». У вікні, що з "явиться, перейдіть до теки з розпакованим плагіном:
і виберіть три * .jar файли:
- jar
- jar
- 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. Натисніть «Configure» навпроти поля «Editor EntryPoint». У вікні «Enter directory to read/write problems to» введіть шлях до теки, в якій будуть з'являтися шаблони коду при відкритті нового завдання.
На вкладці «Code Template» пропонується ввести шаблон коду, який буде прописаний у файл вихідного коду. Як приклад можу запропонувати свій (якщо будете копіпастити - не забудьте попередньо вибрати мову С++): pastebin.com/kwt4Whp3
Крок 10. Натискаємо Save:
У вікні налаштування Codeprocessor'a натискаємо кнопку «Verify». Якщо все пройшло успішно і з'єднано правильно - повинні отримати повідомлення про те, що всі компоненти знайдені:
Знову тиснемо «Save», отримуючи попутне наступне попередження:
На цьому параметрі завершується.
Перевірка плагіну
Для перевірки дієздатності Moj'a, в арені вибираємо будь-яку кімнату для тренування («Practice rooms»):
В інтерфейсі кімнати в полі «Choose problem» виберіть будь-яке з 3 завдань. До слова, там же відразу і побачите кількості балів, якими оцінюються завдання.
Відкривши завдання, ви побачите наступне вікно:
Саме тут ви можете прочитати умову, перевірити Activity Log і переконатися, що Moj спрацював. Для вірності (і для тренування), відкрийте код і напишіть рішення. До слова, одна з фіч TopCoder'a: потрібно написати не цілу програму, а всього лише клас. Дані подаються як аргументи методу класу, результат повертається через значення методу. Moj - дописує всі (за шаблоном), що знаходиться поза класом. Завдяки цьому ви можете, запустивши програму, перевірити свій код на тестах з умови, які автоматично прописуються Moj'ем прямо у вихідний файл.
Коли клас готовий - натискайте послідовно «Save», «Compile», «Test» (опціонально), «Submit». На цьому написання коду зазвичай завершується, і рішення вважається отриманим (але не обов'язково правильним - коректність перевіряється під час системного тесту, наприкінці змагання).
Ув'язнення
Змагання TopCoder значно відрізняються від інших, у тому числі від стандарту АСМ. На вивчення всіх особливостей, про які тут не було навіть згадано, може піти досить багато часу. Тим не менш, головне - почати, а досвід прийде з часом.