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

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

Доброго времени суток.

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

Однако чекер и валидатор выполняют разные функции, и использовать одну библиотеку для написания обеих программ не всегда удобно. Поэтому представляю вашему вниманию библиотеку strict.h — библиотеку, специализированную на валидаторах. Последнюю версию можно скачать по адресу http://acm.timus.ru/stricth/.

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

Всё это позволяет делать библиотека strict.h, которая уже используется при подготовке уральских контестов, а также на Тимусе.

Пример валидатора

Валидатор для задачи 1393. Average Common Prefix с Тимуса:

#include "strict.h"
using namespace std;

const int MAXLEN = 250000;
const int MINLEN = 2;

int main()
{
    Input in;

    int n = in.readInt(MINLEN, MAXLEN);
    in.readEoln();
    in.readToken(n, n, "A-Z");
    in.readEoln();
    in.readEof();

    return 0;
}

Полный текст и комментарии »

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