Создать задачу по программированию
В Контесте можно создать задачу, где в ответе участники указывают код на языке программирования, выполняющий вычисления согласно условию.
Задача по программированию отличается от более простых задач:
- Код участника запускается в изолированном виртуальном окружении с определенными характеристиками.
- Код вызывается с определенной версией компилятора или интерпретатора.
- На вход подается заранее заданный поток данных, чаще всего это поток stdin.
- На выходе ожидается определенный поток данных, чаще всего это поток stdout.
При выполнении программы расходуется процессорное время и используется определенный объем памяти, которые Контест измеряет и может ограничить. Это особенно важно для задач на поиск оптимального решения.
Создать подобную задачу можно без знаний программирования, и такая задача может быть универсальной для нескольких языков программирования.
Рассмотрим пример:
Реализуйте программу, которая просуммирует несколько целых чисел, поданных в стандартный поток ввода.
Вы можете добавлять готовые наборы задач в соревнование. Подробнее см. в разделе Настройки набора задач.
1. Создайте задачу
- На вкладке Задачи нажмите кнопку Создать задачу.
- Придумайте название. Оно будет отображаться в интерфейсе участника.
- Нажмите Создать. Откроется страница настроек задачи.
- Для более быстрого поиска задачи вы можете указать короткое название — оно не отображается для участников.
- Вы можете добавить перевод полного названия на английском языке.
- В поле Тип задачи выберите
PROBLEM_WITH_CHECKER.
2. Укажите тип ответа
Выберите один из типов:
- Текст и файл — решение нужно написать в многострочное поле ввода текста или отправить файлом.
- Однострочный ответ — решение нужно написать одной строкой в поле ввода (подходит не для всех языков программирования).
- Файл — решение нужно отправить файлом.
- Текст — решение нужно написать в многострочное поле ввода.
3. Добавьте условия задачи
-
В меню слева выберите Условия.
-
Выберите тип условия Markdown + KaTeX.
-
Выберите язык:
- ru для русского;
- en для английского.
-
Справа нажмите кнопку Добавить условие.
-
Нажмите строку с добавленным условием, например:
Русский (tex). -
Введите условие в форму и нажмите Сохранить.
Подробнее о создании условия задачи см. в разделе Условия.
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 — это наборы тестов, которые участник видит в условии как пример входных данных и ожидаемых результатов.
-
В меню слева выберите Тесты и решения.
-
Найдите внизу страницы раздел Наборы тестов и нажмите строку All tests.
-
В поле Шаблон входного файла укажите путь до файлов с тестами и в фигурных скобках номера тестов, например
tests/{01-04}— чтобы добавить только тесты с первого по четвертый,tests/{05-}— чтобы добавить тесты с пятого и все остальные. -
В поле Шаблон файла правильного ответа укажите расширение файлов с ответами, например:
*.a— чтобы добавить все файлы с названиями, совпадающими с названиями тестов из п. 3 и расширением.a. -
Нажмите Обновить тесты.

6. Проверьте, правильно ли работает задача (необязательно)
Чтобы проверить, что программа работает правильно, понадобится решение на любом поддерживаемом языке программирования.
Чтобы отправить решение:
- В меню слева выберите Тесты и решения и нажмите кнопку Добавить решение.
- Выберите файл с исходным кодом решения на любом поддерживаемом языке программирования или загрузите его: нажмите кнопку Выбрать файл и найдите нужный на компьютере.
- В меню Решения нажмите свое решение и выберите компилятор, подходящий для запуска.
- Нажмите кнопку Отправить.
Посмотреть подробный отчет о тестировании посылки можно по-разному:
- В меню Посылки нажмите ID нужной посылки.
- Нажмите кнопку Пересудить, чтобы выполнить пересуживание посылки.

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