Коротко о testlib.h
Difference between ru8 and en1, changed 2,335 character(s)
_Раздел о testlib является временным, он будет влит в общий раздел документации, когда таковой появится._↵

Если вы разрабатываете задачу по программированию и делаете это на C++, то testlib.h — это правильный выбор для того, чтобы написать вспомогательные программы. Эта библиотека является фактически стандартом де-факто в профессиональном сообществе авторов задач России и некоторых близлежащих стран. С помощью testlib.h подготовлены всероссийские олимпиады школьников, этапы ACM-ICPC, все раунды Codeforces и многие другие олимпиады.↵

Недавно testlib.h переехал на GitHub, теперь он доступен по ссылке
Section about testlib is temporary, at some day it will be merged into global documentation section when it appears._↵

If you are developing a programming contest problem and you are doing it with using C++ then testlib.h is a right choice to write all axillary programs. This library is a standard solution in a professional community of problemsetters in Russia and several other countries. Many contests are prepared by using testlib.h: All-Russian school olympiads, ACM-ICPC regional contests, all Codeforces round and many others.↵

Recently testlib.h was moved onto GitHub, now it is available by the following link:
 https://github.com/MikeMirzayanov/testlib↵

Библиотека testlib.h имеет очень простое распространение — она размещена в одном заголовочном файле. Для ее использования достаточно положить testlib.h рядом с разрабатываемой программой (чекером, генератором, валидатором или интерактором) и просто добавить в исходный код `#include "testlib.h"`.↵

Вот когда вам поможет testlib.h:↵

* [при написании *генераторов*](/blog/entry/18291) — специальных программ, которые генерируют (выводят) тесты к вашей задаче, ведь далеко не всегда все тесты возможно набрать на клавиатуре (как минимум из-за их возможного большого размера);↵
* при написании *валидатора* — специальной программы, которая считывает тест и убеждается в его корректности, валидаторы должны быть максимально строги к формату (пробелам, переводам строк, лидирующим нулям и проч.);↵
* при написании *интерактора* — он нужен только для интерактивных задач, если у вас задача не такая, то пока не забивайте голову;↵
* при написании *чекера* — если в вашей задаче допустим неоднозначный ответ, то обычно не обойтись без специальной программы, которая, анализируя вывод участника, возвращает вердикт о правильности этого вывода.↵

Библиотека testlib.h имеет полную поддержку в системе подготовке задач [Polygon](https://polygon.codeforces.com).↵

Первые версии testlib.h появились в 2005-м году, как результат портирования
testlib.h library is contained in a single header file. In order to include it you should just put testlib.h in the same directory with a program you are writing (checker, generator, validator or interactor) and just add a following line to the beginning of your program: `#include "testlib.h"`.↵

Here are the cases when testlib.h is really useful:↵

* [In writing *generators*](/blog/entry/18291). These are the programs that create tests for your problem, since it is not always possible to type a whole content of the test by using the keyboard (at least because of their possible large size);↵
* In writing *validators*. These are programs that read the whole test and verifies that it is correct and that it satisfies the constraints of the problem. Validators should be maximally strict with respect to spaces, endlines, leading zeroes etc;↵
* In writing *interactors*. These are programs that are used in interactive problems, if your problem isn't interactive then just nevermind;↵
* In writing *checkers*. If your problem allows several possible answers for the tests then you should write a special program that checks participant's answer against jury's answer and the input data.↵

testlib.h is fully compatible with [Polygon](https://polygon.codeforces.com) problem preparation system.↵

First versions of testlib.h appeared in 2005 as a result of
 testlib.pas на C++. С тех пор testlib.h сильно развился, расширив функциональность и улучшив производительность. Последние версии testlib.h совместимы с компиляторами Visual Studio (разных версий) и GCC g++ (для разных ОС), совместимы сporting on C++. Since then testlib.h has evolved, its features and performance were improved. Last versions of testlib.h are compatible with different versions of Visual Studio compilers and GCC g++ (in editions for many platforms), also it is compatible with C++11.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English KAN 2022-07-07 20:44:13 260
ru9 Russian KAN 2022-07-07 20:39:14 204
en2 English MikeMirzayanov 2015-06-08 22:09:26 20
en1 English Zlobober 2015-06-08 20:43:25 2335 Added English translation
ru8 Russian MikeMirzayanov 2015-06-08 01:29:17 0 (опубликовано)
ru7 Russian MikeMirzayanov 2015-06-08 01:21:37 7 Мелкая правка: 'h имеет поддержку' -> 'h имеет полную поддержку'
ru6 Russian MikeMirzayanov 2015-06-08 01:21:11 21
ru5 Russian MikeMirzayanov 2015-06-08 01:20:00 109
ru4 Russian MikeMirzayanov 2015-06-03 13:35:51 112
ru3 Russian MikeMirzayanov 2015-06-03 01:23:52 323
ru2 Russian MikeMirzayanov 2015-06-03 01:16:48 2 Мелкая правка: 'нии *генереторов* &md' -> 'нии *генераторов* &md'
ru1 Russian MikeMirzayanov 2015-06-03 01:15:54 1715 Первая редакция