📄️ Problem package
A problem package is the unit of work in TCFrame that defines a problem and its test data. It is a directory that consists of all files related to the problem, particularly a spec file and one or more solution files. It is identified by a unique name called slug.
📄️ Spec and runner
The core activity when preparing test cases using TCFrame is writing spec files. A spec file, along with a reference solution program and optionally some evaluator helper files, completely define the test cases of a single problem. A spec file is compilable into a single executable called runner program, which generates the test cases when executed.
📄️ I/O variables
Input variables are C++ variables whose values compose test cases input files. They are are direct translations from variables mentioned in the problem statement's input format section into C++ variables. For example, given the following description:
📄️ I/O formats
Input format specifies two things at the same time:
📄️ Constraints
Constraints are conditions that must be satisfied by the input variables. The conditions will be verified on each test case. If any of the constraints is not satisfied, then the generation is considered to fail on that test case. There will be a nice error message explaining which constraints are not satisfied.
📄️ Subtasks
The concept of subtasks was first formally introduced in IOI 2010. The idea is basically to split a problem into two or more smaller problems with gradually increasing difficulty, and assign them different points.
📄️ Test cases
Technically, a test case is a particular state of input variables, with the corresponding correct values for the output variables. If the values of the input variables conform to each of the specified constraints, then the test case is considered valid, otherwise it is invalid.
📄️ Test groups
A test group is a set of test cases that are assigned/included to the same set of subtasks. If your problem has subtasks, then instead of writing TestCases() method, you will be writing TestGroupX() methods instead, where X is the test group number.
📄️ Multiple test cases per file
TCFrame supports ICPC-style test cases, where there are multiple test cases in a single file, which preceded by a single line containing the test case count.
📄️ Problem styles
The StyleConfig() method of the problem spec class can be used to specify how the generated test cases will be configured in the grading system.
📄️ Local grading
TCFrame allows you to "grade" solutions locally, on your machine.