Рекомендации по составлению задач: различия между версиями
Ctrlalt (обсуждение | вклад) |
Ctrlalt (обсуждение | вклад) (Новая страница: «== Раздел «Входные данные» == Описание формата входных данных — самая формализованная ча…») |
||
Строка 1: | Строка 1: | ||
== Раздел «Входные данные» == | == Раздел «Входные данные» == | ||
Описание формата входных данных — самая формализованная часть условия задачи. Здесь в подавляющем большинстве случаев используется небольшой набор стандартных формулировок. Описание входных данных можно заполнять в первую очередь (даже когда не готова легенда). | |||
Валидатор и генераторы тестов создаются исключительно по информации в данном разделе (фактически, раздел «Входные данные», код валидатора и код генератора — это три представления одной и той же информации). | |||
==== Строки входных данных ==== | |||
Если все входные данные даны в одну строку, то пишем «Ввод содержит <...>». | |||
Если есть несколько строк (так чаще всего), то делаем столько же абзацев, каждый начинается с «Первая строка содержит <...>», «Вторая строка содержит <...>» и т. д. | |||
Если | Если есть блок из N логически объединённых строк: «Следующие $N$ строк описывают <...>. Каждая из них содержит <...>». | ||
Если есть строка после неопределённого числа строк, то числительное заменяем на «следующая»: «Следующая строка содержит <...>». | |||
==== Значения, содержащиеся в строках ==== | |||
Общий вид: «содержит ''тип_значения'' $''имя_значения''$ ($''ограничения''$) --- ''описание_значения''». | |||
Если строка содержит несколько значений, то количество НЕ пишется. Неправильно: «Первая строка содержит два целых числа $N$ и $M$». Правильно: «Первая строка содержит целые числа $N$ и $M$». | |||
Кроме того, если несколько значений, то раздел описаний (после тире) должен начинаться (предпочтительнее) или заканчиваться словом «соответственно». | |||
Ограничения описываются следующим образом: «($1 \le A \le 10$, $100 \le X \le 200$)». Если несколько значений логически связаны и имеют общие ограничения, их можно объединить: «($1 \le X, Y, Z \le 100$)». Пример с дополнительными ограничениями: «($1 \le H, W \le 300$, $H \cdot W \le 1000$, $H \ne W$)». Обратите внимание, что каждое выражение имеет собственные доллар-скобки. | |||
Желательно, чтобы порядок описания значений совпадал с порядком в легенде. | |||
Конкретика по типам: | |||
* Целые числа: «Первая строка содержит целые числа $A$ и $B$ ($1 \le A, B \le 100$) --- соответственно количество зайчиков и количество белочек» | |||
* Вещественные числа: «Первая строка содержит вещественные числа $X$ и $Y$ ($0 \le X, Y \le 1$), заданные с не более чем двумя знаками после десятичной точки, --- соответственно вероятность победы Макса и вероятность победы Владимира.» | |||
* Строки: «Первая строка содержит последовательность $S$ ($10 \le |S| \le 100$), состоящую из строчных латинских букв, пробелов и знаков препинания, --- текст сообщения.» | |||
* Символы, строки из фиксированного множества: «Первая строка содержит символ $C$ ($C \in \{\texttt{X}, \texttt{Y}, \texttt{Z}\}$) --- тип операции.», «Первая строка содержит слово $T$ ($T \in \{\texttt{PUSH}, \texttt{POP}\}$) --- тип операции.». |
Версия от 12:17, 28 января 2019
Раздел «Входные данные»
Описание формата входных данных — самая формализованная часть условия задачи. Здесь в подавляющем большинстве случаев используется небольшой набор стандартных формулировок. Описание входных данных можно заполнять в первую очередь (даже когда не готова легенда).
Валидатор и генераторы тестов создаются исключительно по информации в данном разделе (фактически, раздел «Входные данные», код валидатора и код генератора — это три представления одной и той же информации).
Строки входных данных
Если все входные данные даны в одну строку, то пишем «Ввод содержит <...>».
Если есть несколько строк (так чаще всего), то делаем столько же абзацев, каждый начинается с «Первая строка содержит <...>», «Вторая строка содержит <...>» и т. д.
Если есть блок из N логически объединённых строк: «Следующие $N$ строк описывают <...>. Каждая из них содержит <...>».
Если есть строка после неопределённого числа строк, то числительное заменяем на «следующая»: «Следующая строка содержит <...>».
Значения, содержащиеся в строках
Общий вид: «содержит тип_значения $имя_значения$ ($ограничения$) --- описание_значения».
Если строка содержит несколько значений, то количество НЕ пишется. Неправильно: «Первая строка содержит два целых числа $N$ и $M$». Правильно: «Первая строка содержит целые числа $N$ и $M$».
Кроме того, если несколько значений, то раздел описаний (после тире) должен начинаться (предпочтительнее) или заканчиваться словом «соответственно».
Ограничения описываются следующим образом: «($1 \le A \le 10$, $100 \le X \le 200$)». Если несколько значений логически связаны и имеют общие ограничения, их можно объединить: «($1 \le X, Y, Z \le 100$)». Пример с дополнительными ограничениями: «($1 \le H, W \le 300$, $H \cdot W \le 1000$, $H \ne W$)». Обратите внимание, что каждое выражение имеет собственные доллар-скобки.
Желательно, чтобы порядок описания значений совпадал с порядком в легенде.
Конкретика по типам:
- Целые числа: «Первая строка содержит целые числа $A$ и $B$ ($1 \le A, B \le 100$) --- соответственно количество зайчиков и количество белочек»
- Вещественные числа: «Первая строка содержит вещественные числа $X$ и $Y$ ($0 \le X, Y \le 1$), заданные с не более чем двумя знаками после десятичной точки, --- соответственно вероятность победы Макса и вероятность победы Владимира.»
- Строки: «Первая строка содержит последовательность $S$ ($10 \le |S| \le 100$), состоящую из строчных латинских букв, пробелов и знаков препинания, --- текст сообщения.»
- Символы, строки из фиксированного множества: «Первая строка содержит символ $C$ ($C \in \{\texttt{X}, \texttt{Y}, \texttt{Z}\}$) --- тип операции.», «Первая строка содержит слово $T$ ($T \in \{\texttt{PUSH}, \texttt{POP}\}$) --- тип операции.».