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

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

Привет, Codeforces.

Рад поделится небольшим, но полезным обновлением Polygon, которое было полностью разработано мной уже в стенах ИТМО. Теперь подготавливать задачи с затейливым вводом-выводом станет немного проще.

Теперь в новых задачах вы тот ввод-вывод для примеров попадает в текст условия без каких-либо преобразований LaTeX-ом. Например, если раньше у вас были сложности с правильным форматированием пустых строк или тем, что двойной дефис заменяется на тире, то теперь таких трудностей нет. Улучшение работает как для PDF-, так и HTML-условий.

Чтобы иметь вот такие примеры ввода-вывода просто добавляйте такой тест и используйте соответствующий вывод из авторского решения.

Отмечу, что возможность перезаписать примеры сохранилась (custom content of input or output data for statements). Кажется, что причин использовать её для ввода теперь почти нет (видимо, только для интерактивных задач).

В старых задачах используется прежний подход, поэтому это нововведение не должно сломать существующие задачи.

Как вам фича?

  • Проголосовать: нравится
  • +230
  • Проголосовать: не нравится

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

Thank you MikeMirzayanov for the update!

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

имто

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

ИМТО?)

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

Как вам фича?

Неплохо :)

Кстати, не так давно об этом сообщал в баг-трекер: link

Но по ответу

Для этого есть input for statements, чтобы добавить тест в LaTeX-разметке.

мне показалось, что он помечен как won't fix. Если бы не этот пост, не узнал бы, что этот баг исправлен :)

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

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

Кстати, на КФ планируется сделать, чтобы при посылке не было видно авторского ответа?

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

    Для этого надо написать авторское решение вида if (n == 2 && a == {1,2}) cout << 3;

    Если так сделать, то еще и ворнингов никаких в полигоне не будет. В отличие от custom output.

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

      Не, ну так я умею, но это костыль же (а вообще полигон умеет проверять что аутпут проходит чекер(если только там нет тех-вёрстки) и в таком случае имеет смысл варнинг не показывать (а может и уже не показывается))

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

      У меня как-то была задача, в которой чтобы не палить участникам решение надо было вывести 105 единиц, а в тесте в принципе output был не меньше 64 даже на минтесте, так что это не всегда работает.

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

Очень круто! Недавно приходилось заливать задачу, в которой в выводе были решетки, сейчас это станет проще.

А можно небольшой вопрос по полигону? Почему при форматировании IOI типа задачи, где можно указывать баллы за пройденный тест в чекере, при вызове _pc(score) возвращает 16 + score? Не очень понятен скрытый смысл :(

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

Don't be afraid of special characters :>

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

Как я вижу, для этого в Files -> problem.tex используется \exmpfile из стандартного olymp.sty. Ну что ж, давно пора! Спасибо за нововведение!

Проблема с \exmpfile в том, что для PDF-версии условий в длинных строках он не делает переносы. Пример: very-long-line

В превью HTML-версии такая строка тоже вылезает за границу примера. Как будет в отображении задачи на Codeforces, пока не проверял.

Тем не менее, обычно такие длинные строки в тестах — повод что-то поменять в задаче: ведь добавленные переносы формально не соответствуют условию.

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

    Тем не менее, обычно такие длинные строки в тестах — повод что-то поменять в задаче

    ДЕЙСТВИТЕЛЬНО

    image

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

      Я рад, что эта задача так хорошо запомнилась :) . В ней-то как раз всё хорошо поместилось в полстроки, так что претензия не по теме.

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

      С одной стороны, я понял, насколько участникам это не нравится, и обязательно учту это в будущем. С другой стороны, это не значит, что строковые константы вам в задачах больше никогда не придётся вбивать. Если вы встретили такую задачу, можно не нервничать, а спокойно вбить их и пойти дальше.

      Я пошёл и посчитал: в этой задаче аж 9 строк из 158 байт в сумме. Сложно? Ну ok, я понял.

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

Can you please develop it so that we can prepare IOI styled problems ?

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

    What prevents you from doing that right now?

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

      Interactive problems ? Actually I don't know how to do these :'(

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

      I think we need a way to tag groups for each test in a programmable manner. Currently there is setGroup() function in the validator, but it is not reflected to the actual group data. This will greatly help the support on problems with subtasks. (like in IOI)

      I commented this before, but no one seemed to care back then :(

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

Задачи с затейливым вводом-выводом все еще не вымерли?