Создать задачу по программированию

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

Задача по программированию отличается от более простых задач:

  • Код участника запускается в изолированном виртуальном окружении с определенными характеристиками.
  • Код вызывается с определенной версией компилятора или интерпретатора.
  • На вход подается заранее заданный поток данных, чаще всего это поток stdin.
  • На выходе ожидается определенный поток данных, чаще всего это поток stdout.

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

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

Рассмотрим пример:

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

Вы можете добавлять готовые наборы задач в соревнование. Подробнее см. в разделе Настройки набора задач.

1. Создайте задачу

  1. На вкладке Задачи нажмите кнопку Создать задачу.
  2. Придумайте название. Оно будет отображаться в интерфейсе участника.
  3. Нажмите Создать. Откроется страница настроек задачи.
  4. Для более быстрого поиска задачи вы можете указать короткое название — оно не отображается для участников.
  5. Вы можете добавить перевод полного названия на английском языке.
  6. В поле Тип задачи выберите PROBLEM_WITH_CHECKER.

2. Укажите тип ответа

Выберите один из типов:

  • Текст и файл — решение нужно написать в многострочное поле ввода текста или отправить файлом.
  • Однострочный ответ — решение нужно написать одной строкой в поле ввода (подходит не для всех языков программирования).
  • Файл — решение нужно отправить файлом.
  • Текст — решение нужно написать в многострочное поле ввода.

3. Добавьте условия задачи

  1. В меню слева выберите Условия.

  2. Выберите тип условия Markdown + KaTeX.

  3. Выберите язык:

    • ru для русского;
    • en для английского.
  4. Справа нажмите кнопку Добавить условие.

  5. Нажмите строку с добавленным условием, например: Русский (tex).

  6. Введите условие в форму и нажмите Сохранить.

Подробнее о создании условия задачи см. в разделе Условия.

4. Добавьте тесты

Тесты — это наборы входных данных и ожидаемых результатов выполнения программы. Например:

Задача:

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

Входные данные:
5 7
Ожидаемый результат:
12

Тесты — основная часть задачи по программированию. Создать файлы тестов можно несколькими способами:

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

1. В меню слева выберите Тесты и решения и нажмите кнопку Создать тест.

2. В поле Название тестового файла укажите название для файла с входными данными.

3. В поле Тестовые данные укажите входные данные.

4. В поле Название файла ответа укажите название для файла с ожидаемым результатом.

5. В поле Ответ укажите ожидаемый результат.

6. Нажмите Добавить.

Результат заполнения формы должен получиться как на скриншоте ниже:

Примечание

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

1. Создайте все файлы для тестов на компьютере.

Имена файлов с входными данными должны быть схожи между собой и незначительно отличаться от файлов с ожидаемыми результатами. Например, 01 02 03 для файлов с входными данными и 01.a 02.a 03.a для файлов с ожидаемыми результатами.

2. Перенесите файлы с тестами в директорию. По умолчанию это tests.

3. Заархивируйте папку.

  • Допустимы архивы вида: 7-Zip, ZIP, RAR, tar, tar.gz.
  • В корне архива должна быть директория tests, в ней файлы с данными.

4. В меню слева выберите Загруженные файлы.

5. Выберите корень файлов задачи и нажмите кнопку Выбрать файл.

Файлы загрузятся и разархивируются. Если имена файлов и пути совпадают, файлы будут заменены.

5. Создайте и обновите наборы тестов

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

По умолчанию в задаче есть набор тестов All tests, но также можно добавить тесты в набор samples и неограниченное количество отдельных наборов.

Samples — это наборы тестов, которые участник видит в условии как пример входных данных и ожидаемых результатов.

  1. В меню слева выберите Тесты и решения.

  2. Найдите внизу страницы раздел Наборы тестов и нажмите строку All tests.

  3. В поле Шаблон входного файла укажите путь до файлов с тестами и в фигурных скобках номера тестов, например tests/{01-04} — чтобы добавить только тесты с первого по четвертый, tests/{05-} — чтобы добавить тесты с пятого и все остальные.

  4. В поле Шаблон файла правильного ответа укажите расширение файлов с ответами, например: *.a — чтобы добавить все файлы с названиями, совпадающими с названиями тестов из п. 3 и расширением .a.

  5. Нажмите Обновить тесты.

6. Проверьте, правильно ли работает задача (необязательно)

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

Чтобы отправить решение:

  1. В меню слева выберите Тесты и решения и нажмите кнопку Добавить решение.
  2. Выберите файл с исходным кодом решения на любом поддерживаемом языке программирования или загрузите его: нажмите кнопку Выбрать файл и найдите нужный на компьютере.
  3. В меню Решения нажмите свое решение и выберите компилятор, подходящий для запуска.
  4. Нажмите кнопку Отправить.

Посмотреть подробный отчет о тестировании посылки можно по-разному:

  • В меню Посылки нажмите ID нужной посылки.
  • Нажмите кнопку Пересудить, чтобы выполнить пересуживание посылки.

Примечание

При пересуживании для посылки создается новое окружение из текущих настроек задачи. Если посылку отправляли, когда был один тест, а затем добавили еще один, тестирование выполнится уже на двух тестах.

Написать в службу поддержки