Блог пользователя daftcoder

Автор daftcoder, 13 лет назад, По-русски
Доброго времени суток, дамы и господа!

В преддверии приближающегося SRM 497 хочу продолжить рассказ о ТопКодере.

Расскажу о установке некоторого набора плагинов TopCoder'а и MS Visual Studio. Язык программирования: C++.

Эта статья является обещанным (но запоздалым :D) продолжением первой вводной статьи. Если вы ещё не участвовали в соревнованиях TopCoder::Algorithm раньше, но интересуетесь, то рекомендую сначала прочитать её.

Микроопыт и микрообзор плагинов.
Буквально вчера посмотрел предложения в первой теме от SkidanovAlex и KADR.
Сам раньше использовал предложенную Алексом связку File Edit + Code Processor + TZTester, но на одном из контестов обнаружил, что TZTester не смог корректно обработать пустой вектор. Пришлось вручную отключать этот тест, а точнее запускать все тесты кроме этого - а это трата драгоценных для TopCoder'а секунд!

Посмотрев же ссылку, предложенную Ярославом, я очень удивился: в теме описывался плагин moj, а так же давалась ссылка на скачивание архива с плагином, в котором находилась достаточно подробная и очень краткая инструкция по установке. Кроме того в архиве находятся два необходимых для moj File Edit и Code Processor. Так же в архиве находятся два небольших темплейта: для C++ и Java. Очень удобно!

Что же нам обещает moj?
  • Более симпатичный вывод.
  • Вещественные типы сравниваются как на TopCoder'е с относительной и абсолютной погрешностью 10-9.
  • Добавление пользовательских тестов становится легче.
  • Поддержка Java. Вы можете открыть задачи и переключаться между Java и C++.

Итак, установка.
  1. Скачаем архив. Разархивируем его в удобную папку (например «X:\TCPlugins\»).
  2. Запустим TC Arena. Откроем пункт меню «Options => Editor».
  3. Нажимаем [ Add ].
    Name: «CodeProcessor»
    EntryPoint: «codeprocessor.EntryPoint»
    ClassPath: [ Browse ], находим в нашей папке («X:\TCPlugins\») файлы CodeProcessor.jar, FileEdit.jar и moj.jar, выделяем их, нажимаем [ Open ].
    Длжно поулчиться что-то вроде «X:\TCPlugins\CodeProcessor.jar;X:\TCPlugins\FileEdit.jar;X:\TCPlugins\moj.jar».
  4. Выбираем добавленный нами CodeProcessor и нажимаем [ Configure ].
    Проверяем Editor EntryPoint: «fileedit.EntryPoint», нажимаем [ Configure ].
    Во вкладке General у меня лично сейчас настроено так:
  5. Во вкладке Code Template выбираем нужный нам язык C++ и копируем туда текст из template.cpp (который был в архиве вместе с плагином).
    Естественно этот темплейт мы можем изменять и добавлять свои "импорты, дефайны", модули, typedef'ы и прочую разнообразную ерунду.
    Нажимаем [ Save ] и [ Close ].
  6. Проверяем, что в списке скриптов есть «moj.moj». Нажимаем [ Verify ] - должно появиться сообщение о том, что найдено четыре метода. Нажимаем [ Configure ], выбираем «Visual C++».
    [ Save ] & [ Close ].
  7. [ Save ] & [ Close ]
  8. ??????
  9. PROFIT

Что получаем на выходе?

У нас парсится условие задачи, создаётся нужный нам класс с нужным методом, создаются средства для тестирования написанного класса прямо из студии. Далее не забываем сохранить наш исходник локально, отправляем на компилирование на сервер TC и с радостью сабмитим.
Настоятельно рекомендую потренироваться перед завтрашним контестом - привыкнуть к новым фичам.

Завтра, если проснусь к 5 утра, буду первый раз писать с moj, но заслать SRM-496 DIV-2 250 у меня получилось с этой сборкой за > 244,00.

Good Luck & Have Fun!

ВНЕЗАПНО всё ещё жоолтый,
Максим Делюкин aka daftcoder.
  • Проголосовать: нравится
  • +17
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
С точки зрения moj для Java все то же самое
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Идельно для тех, кто длиннку пишет на Java, а остальное на сях. :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      /me судорожно пытается вспомнить, кто это на ТС была задача с длинным ответом или такая, где вообще реально нужна была длинка. 
      Я конечно на ТС не очень давно ( с середины 2008 ) и учавствовал далеко не во всех срмах, но такого вспомнить не могу.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Тогда непонятно зачем нежно переключение между C++ и Java.
        Единственное что в голову приходит - пишущий на Java боится не протолкнуть совё решение по времени, поэтому пишет на C++ вместо Явы.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Когда-то (в течение последних 3-х лет) была задача, которая решалась при помощи FFT ну или карацубы. Правда тут опять же не чистая длинка.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          На предыдущем онсайте Opencup была задача с польских олимпиад, которую авторы решали с помощью FFT. У нас её и так пропихнули.

          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Здесь говорится про использование этого на топкодере, т.к.  обычно в задачах их формата входные данные относительно небольшие, а FFT применяется для перемножения многочленов сравнительно большой степени.
13 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится
Три раза не нужно Browse выбирать, там 3 файла можно сразу выбрать и все)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
moj пустые вектора так же не умеет обрабатывать:(
а еще isnan() и isinf() надо вручную добавлять
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    По-моему на форуме ТК уже писали что умеет. У тебя последняя версия?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Нужно сделать #include <cfloat> чтобы isnan и isinf работали. Пустые вектора в студии точно обрабатываются нормально, насчет GCC не уверен. 
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Нормально пустые вектора обрабатывает.
    Проверил на этой задаче. MSVS 2008.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Неплохо бы ещё добавить в этот пост описание, какие плагины доступны на онсайте TCO, а также можно ли их тупо принести с собой на флешке и поставить самому (или есть ли там инет и можно ли их скачать и поставить). Автор, видимо, как и я, там ещё не был, но среди комментаторов найдутся товарищи, которые подскажут.
Или даже, может быть, стоит реквестировать от кого-нибудь пост о специфике онсайта.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    На онсайте доступны Kawigi и FileEdit. Kawigi без компиляторов. Приносить с собой ничего нельзя, перед началом тура дается пол часа
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Когда последний раз обсуждали, кто-то верно заметил, что Kawigi может сохранить код со всеми тестами, и к нему можно потом подцепиться из студии.

Поэтому теперь я смутно вижу смысл использовать что-то кроме Kawigi Edit :о

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вот тут вот есть инструкция по установке ReTester'a для Java: http://yakov-sirotkin.livejournal.com/65582.html
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Решил не создавать новую тему и спросить сюда.

Пишу на C++.

Впервые поставил и настроил KawigiEdit, и выяснил одну неприятную вещь. Оказывается, при тестировании Kawigi прогоняет все тесты при одном запуске программы. А при тестировании на топкодере каждый тест - это отдельный запуск (проверил).

Я привык всегда полагаться на обнуленные глобальные переменные, а тут получается, что ради тестирования в Kawigi мне придется лишний раз беспокоиться об их состоянии. Конечно, это не особо сложно, но лишнее время отнимет.

Можно с этим как-то бороться?

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Вряд ли с этим можно адекватно бороться пр запуске программы 1 раз. Используй переменные внутри класса. Кстати вроде они должны зануляться, если есть какой-либо конструктор
  • 13 лет назад, # ^ |
      Проголосовать: нравится +15 Проголосовать: не нравится
    Есть плагин к С++, называется memset :о)
»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Плагин установил все вроде нормально, компилируется, но когда отправляю выводит ERROR while submitting: Error on copying blob data.

Помогите если кто то знает или встречался с такой проблемой.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Боюсь, что это не проблема плагина... А очень грустно. Впрочем вроде админы с этим уже умеют бороться.

»
5 месяцев назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Подскажите в чем проблема. Подключил плагины, программа написаная в среде топкодера тс арена компилируется, создается файл си++ во внешней среде, а именно в codeblocs. Редактирую код в codeblocs, начинаю его компилировать не работает. Оно вообще должно компилироваться или нет. Или надо просто писать в редакторе codeblocs сохранять, программу, а компилировать в тс арена. Спасибо.