Условие задачи

Условие задачи — это текстовый документ, который четко объясняет суть задачи, описывает ограничения и форматы входных и выходных данных, а также предоставляет другую важную информацию, необходимую для решения задачи.

На Eolymp задачи могут иметь несколько условий на разных языках, что позволяет участникам выбирать язык, который им удобнее.

Как создать условие

Чтобы создать или отредактировать условие задачи, выполните следующие шаги:

  • Откройте консоль и выберите пространство, где размещена задача.

  • Перейдите в раздел Задачи в левом меню.

  • Выберите задачу, которую хотите отредактировать, или создайте новую.

  • Перейдите в раздел Условия через меню задачи.

Вы можете добавить новое условие, нажав "Добавить условие" в верхней части интерфейса. Для редактирования существующего условия выберите его из списка.

Screenshot 2024-10-14 at 09.46.43.png

Рис. 1. Форма создания условия задачи

В редакторе условий вы можете задать ключевые элементы: название задачи, текст условия, источник и информацию об авторе. Если задача использовалась на официальном соревновании, можно загрузить PDF-файл с оригинальной версией условия, и он будет доступен для скачивания участниками.

Как написать условие задачи

Хорошо составленное условие задачи должно содержать несколько ключевых разделов:

  • Введение: Краткое объяснение цели задачи. Этот раздел должен предоставить контекст, но не раскрывать подсказок по её решению.

  • Входные данные: Предоставьте подробное описание формата входных данных. Укажите все ограничения на входные значения (например, ). Четкие инструкции по вводу помогают участникам избежать ошибок и сделать решения более эффективными.

  • Выходные данные: Точно опишите формат ожидаемого вывода. Если возможно несколько правильных ответов, уточните, какой из них должен предоставить участник (например, наименьшее значение или любой допустимый ответ).

  • Протокол взаимодействия (для интерактивных задач): В интерактивных задачах ввод и вывод данных происходит динамически. Опишите, как решение будет взаимодействовать с интерактором, подробно объяснив "диалог" между решением и системой. Например, в задаче на угадывание числа интерактор может давать обратную связь типа "меньше" или "больше" после каждого ответа.

  • Примеры: Этот раздел содержит примеры входных и выходных данных, чтобы помочь участникам понять, как выглядят данные. Примеры автоматически генерируются и отображают тесты, отмеченные как примеры.

В некоторых случаях можно добавить дополнительные разделы:

  • Оценивание: Если задача предусматривает частичное оценивание (например, когда за выполнение отдельных подзадач начисляются разные баллы), опишите, как начисляются баллы за каждый набор тестов.

  • Примечания: Для более сложных задач полезно объяснить, как был получен ответ в примерах, чтобы помочь участникам лучше понять логику задачи.

Форматирование

Текст условия должен быть написан в формате LaTeX или Markdown. Эти форматы поддерживают богатое текстовое оформление и математические выражения, что гарантирует, что сложные формулы или данные будут представлены ясно и структурировано.

Также необходимо использовать специальные маркеры для определения разделов внутри условия. Эти маркеры помогают системе структурировать и корректно отображать содержимое. Каждый маркер начинается со знака обратной косой черты (\) и размещается на отдельной строке с пустыми строками до и после.

Маркер

Описание

\InputFile

Начало описания входных данных.

\Interaction

Начало описания протокола взаимодействия (для интерактивных задач).

\OutputFile

Начало описания выходных данных.

\Examples

Начало раздела с примерами.

\Note

Начало раздела с пояснениями к примерам.

\Scoring

Начало раздела с описанием алгоритма оценивания.

Эти маркеры работают как в Markdown, так и в LaTeX. Пример условия с маркерами:

Все, что находится перед первым маркером, является введением.

\InputFile

Этот раздел описывает формат входных данных.

\OutputFile

Этот раздел описывает формат выходных данных.

Лучшие практики

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

  • Будьте точны: Избегайте двусмысленностей, четко определяя термины и ограничения. Например, если задача связана с обработкой слов, уточните, что считается словом (например, как обрабатываются знаки препинания или дефисы).

  • Указывайте все ограничения: Убедитесь, что участники знают обо всех ограничениях задачи. Если скрыть важные детали или быть неясными (например, не указать, как обрабатывается пунктуация), это может вызвать разочарование. Задача должна заключаться в решении проблемы, а не в угадывании требований задачи.

  • Используйте четкие примеры: Приведите несколько примеров с входными и выходными данными и кратким пояснением того, как были получены ответы. Примеры помогают участникам проверить свое понимание задачи.

  • Придерживайтесь логичной структуры: Соблюдайте четкий порядок: введение, входные данные, выходные данные и дополнительные разделы (например, протокол взаимодействия для интерактивных задач). Последовательность помогает участникам легче ориентироваться в условии задачи.

Примеры

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