С самого первого контеста на TopCoder мне показалось очень неудобным полностью писать вручную класс решения. Я попробовал пару плагинов, которые можно найти на сайте, но они мне не понравились. Минусом многих плагинов (для меня) является интеграция в какую-то IDE или арену – я обычно использую только какой-нибудь редактор кода и файловый менеджер (обычно Kate + Midnight Commander, а в плохие дни Far Manager + Notepad++). Также, для тестирования решения на разных тестах с помощью обычных плагинов нужно перекомпилировать решение, что, согласитесь, в корне неправильно.

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

  • генерация класса решения на основе прототипа;
  • удаление unused code;
  • каждый тест – отдельный файл;
  • автоматическая генерация тестов из условия;
  • проверка на отдельном тесте или всех тестах по очереди с проверкой правильности ответа и времени выполнения и красивой подсветкой результатов тестирования;
  • копирование ваших библиотек (prewritten code) для удобства непосредственно в каталог задачи;
  • скрипты написаны с использованием C++ и Bash (для Windows – bat) кроме одного на Java, так что все работает очень быстро.

Для работы необходимо:

  • распаковать архив (например в topcoder/utils);
  • для инициализации контеста запустить скрипт ./tsc из topcoder/utils, передав в качестве параметра название контеста или любую строку, это будет название подкаталога в каталоге topcoder (например, ./tsc srm411-division1);
  • скопировать условие задачи в соответствующий файл в подкаталоге statements в только что созданном каталоге с названием контеста (например, topcoder/srm411-division1/statements/a.txt);
  • перейти в каталог соответствующий задаче (topcoder/srm411-division1/a);
  • запустить скрипт tgp – он создаст файл для класса-решения (.h), программу для тестирования (.cpp) и скопирует .h-файлы из topcoder/utils/includes в текущую папку;
  • запустить tgt – сгенерятся тесты из условия;
  • решить задачу :) – редактировать надо только файл .h;
  • скомпилировать командой tgcc;
  • проверить на тестах – tgta;
  • почистить unused code – tcl ClassName.h;
  • отправить текст из ClassName.h в арену (может помочь скрипт tcp ClassName.h, к сожалению для X-ов программно скопировать текст из консоли не получилось :( ).

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

Система используется больше двух лет (правда в основом Linux-версия) и ни разу не подводила (по крайней мере, я не помню случаев). На данный момент все фичи работают для C++ и есть очень базовая поддержка Java (генерация прототипа – tgp с параметром java, компиляция – tjc).

Выкладываю как Linux, так и Windows-версию:

arti’s TopCoder Tools (Linux)

arti’s TopCoder Tools (Windows)

Использовать на свой страх и риск, очень рекомендую попробовать в practice session перед использованием непосредственно на контесте. Вопросы, предложения и дополнения принимаются в комментариях и на email.


Постовой (да, да, и я тоже :) ):

фотограф