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

Автор imslavko, 12 лет назад, По-русски

Где можно найти справку по полигону? Ссылка в самой системе битая. Помимо блогов codeforces где-нибудь еще можно найти обсуждение и информацию по системе?

Также еще несколько мелких вопросов:

  1. Когда генерятся условия, в примерах отсутствуют ответы. При этом есть и main-solution, и ответы на обычные тесты генерятся отлично. Как добиться того, чтобы и в условиях появились ответы?
  2. Есть ли способ импорта в полигон задачи из готового full-package созданного в формате polygon?
  3. Может есть место, где люди делятся простенькими задачами в формате полигона или другом формате пригодном для использования другими?
  • Проголосовать: нравится
  • +9
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
  1. Заходишь в Tests, жмакаешь по Edit напротив того теста, который хочешь вставить в условие и ставишь галочку напротив "Use in statements".
  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Я так и делал. В условия добавились тесты, но не ответы к ним.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      1. Действительно ли это Main correct solution, а не просто Correct solution?
      2. На всякий случай: поставлены ли чекер и валидатор?
      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Да, это main correct solution.

        И чекер, и валидатор загружены в систему и установлены.

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

          Предположения:
          1. (глупое) может какой-то нехороший человек подправил problem.tex? :D
          2. (вроде бы разумное) в задаче стоит файловый ввод-вывод, а main correct solution выводит в stdout

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

            problem.tex я не исправлял, а других нехороших людей под аккаунтом нет.

            Возможно ввиду отсутствия справки я путаю, как это должно работать:

            жму напротив тесте "edit", отмечаю "Use in statements", сохраняю и радуюсь? Main solution должен же сам сгенерить мне ответ и вставить в условие? Хотя есть возможность и вручную вставить это.

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

              Именно так и должно работать.

              Вообще там могут быть проблемы с символами вроде #, которые надо экранировать как \#, сделав инпут-аутпут для этого теста ручным.

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

              На самом деле лучше к MikeMirzayanov с такими проблемами обращаться.

              P.S. по моему второму предположению ты не отписался, может, это оно?

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

                Да, было как раз второе. Решение выводило в problem.out. Спасибо.

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

                Кстати о символах #: почему-то условия задачи с # нормально генерятся, а если такая задача будет в контесте  —  появятся ошибки.

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

                  Эта ошибка с решетками уже известна более года. В Петрозаводске я лично о ней сообщил Михаилу Мирзаянову, он в курсе, так что от пользователей больше ничего не зависит.

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

                  А если их экранировать, то pdf-ка для отдельной задачи генериться не будет, а вот для контеста все сделается хорошо. Магия, да?

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

                  Ну тоже не очень-то удобно, для preview каждый раз pdf-ку для всего контеста собирать.

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

      Очень странно. Думаю, бага либо в тесте (неправильный, из-за чего model solution не работает), либо собственно в model solution, либо это бага Polygon.

»
12 лет назад, # |
Rev. 3   Проголосовать: нравится +3 Проголосовать: не нравится

Тут вроде нормально написано что и как

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

    Я читал это, там описаны тонкости для продвинутых пользователей Polygon. Первые шаги совсем не очевидны без простой справки, которой нет или она недоступна временно. Так-то очень хорошая тема, я не спорю.

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

      Ну совсем для начинающих MikeMirzayanov раньше пару тройку раз читал лекцию про то зачем Polygon нужен и как им пользоваться, но на видео это не снимали(

      А вообще идея простая. Целью является создание задачи. Для этого нужно: 1) зарегистрироваться на сайте; 2) придумать название задачи и создать ее (для этого есть кнопочка); 3) Теперь нужно сделать небольшие мелочи (установить TL, ML, input, output), поставить теги задачи (например тернарный поиск); 4) дальше пишется условие на нужном/ых языке/ках; 5) авторское решение, просто надо написать авторское решение и добавить его во вкладке Solution; 6) тесты можно сделать либо вручную добавляя их по одному, либо написать небольшую (иногда большую) программку которая берет из параметров командной строки параметры и выводит в консоль тест. Пример генератора:

      #include <iostream>
      #include "testlib.h"
      
      using namespace std;
      
      int main(int argc, char* argv[])
      {
          registerGen(argc, argv);
          
      	int n = atoi(argv[1]);
      	
      	cout << n << endl;
      	
      	for (int i = 0; i < n; i++)
      		cout << rnd.next(100) << ' ';
      	cout << endl;
      	
      	return 0;
      }
      

      7) Теперь когда есть тесты и генератор/ы будет очень круто написать валидатор — программа которая проверяет нагенеренный и введенный тесты на корректность. Без валидатора нехорошо, потому что можно набажить в генераторе, а потом участники будут жаловаться на кривые тесты 8) В invocationах можно запустить решения на тестах и убедиться, что все хорошо (или плохо) 9) В конце можно собрать package — архив где все аккуратно лежит

      P.S.: Чуть не забыл про чекер — программа проверяющая ответ на правильность. Можно пользоваться стандартными чекерами (типа проверить ответ участника на побуквенное равенство с авторским, либо написать самому что-то умное). По поводу того что такое testlib. Можно зайти на скачать архив там есть примеры и генераторов, и валидаторов, и чекеров.

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

        Здорово. А что дальше делать с package? Какие-то проверяющие системы принимают его в таком виде? Ejudge, насколько я знаю, в последних версиях таки научился работать с Polygon, пусть и не полностью.

        Еще вопрос: как пользоваться скриптом для генератора? Что является генератором: исходник, залитый в раздел файлов-исходников? В чем различие использования генератора в общей странице тестов и отдельной странице для каждого теста?

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

          Еджадж, который стоит у нас, криво собран, поэтому с полигоном не работает. Но это на самом деле почти не проблема — достаточно просто залить сгенеренные тесты (tests/*) и чекер (files/testlib.h и files/check.cpp), а потом скомпилировать чекер. И все. Времени отнимает секунд 30 на каждую задачу — не очень и страшно.

»
9 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Уважаемые участники! Я в тяжелой ситуации. 22 апреля уже контест, задачи и тесты разработал, а как залить на polugon не знаю. Если кто может советом — помогите пожалуйста. Буду благодарен.

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

Можно ли создавать условии задач на русском языке ?

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

А у кого-нибудь была подобная сюрреалистичная ошибка при создании пакета:

PackageException: There exists an output where checker/interactor crashes, output description is "Single random negative int64". Expected exit codes are 0, 1, 2 or 7, but 0 found.

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

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

    Вроде же подробно написано. У вас если чекер/интерактор получает от участника случайное отрицательное число int64 число, то неожиданно падает. Вы можете даже добавить такой тест для чекера и увидеть, что чекер падает. Просто исправьте его. Всегда следует предполагать, что участник может вывести любой бред и задача чекера корректно это обработать (большинство работы берет на себя testlib).

    UPD: Но сообщение, кстати, странное чуток. Написал в личку, чтобы выяснить подробности.

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

      От участника я получаю только массив чисел с плавающей точкой. Размер задаётся заранее. Там присутствуют строки, которые могут заставить его упасть. Каждый элемент считывается примерно вот так:

      double value = ouf.readDouble();
      ensuref(0 <= value, "%f < 0", value);
      

      Разве в этом случае не должно быть вердикта WA или PE?

      UPD:
      Запустил локально, действительно вердикт FAIL.

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

        ensuref не для этого, наверное здесь можно использовать ouf.ensuref.

        Наверяка, здесь лучше использовать ouf.readStrictDouble(0.0, 1E9, 0, 6) и написать в условии, что надо выводить не более 6 знаков после десятичной точки, ну и что ожидаются числа от 0 до 10^9.