Problem schema
problem.rbx.yml
CodeItem
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path
|
The path to the code file, relative to the package directory. |
required |
language |
str | None
|
The language of the code file. |
None
|
compilationFiles |
List[str] | None
|
Extra files that should be placed alongside the code file during its compilation, such as testlib.h, jngen.h, etc. The paths should be given relative to the package directory, but will be included
relative to the Testlib and jngen are already included by default. |
[]
|
Source code in robox/box/schema.py
ExpectedOutcome
Bases: AutoEnum
Source code in robox/box/schema.py
ACCEPTED = alias('accepted', 'ac', 'correct')
Expected outcome for correct solutions (AC).
INCORRECT = alias('fail', 'incorrect')
Expected outcome for solutions that finish with any non-AC verdict.
MEMORY_LIMIT_EXCEEDED = alias('memory limit exceeded', 'mle')
Expected outcome for solutions that use more memory than allowed.
RUNTIME_ERROR = alias('runtime error', 'rte', 're')
Expected outcome solutions that finish with non-zero code (RTE).
TIME_LIMIT_EXCEEDED = alias('time limit exceeded', 'timeout', 'tle')
Expected outcome for solutions that do not finish in time.
TLE_OR_RTE = alias('tle or rte', 'tle/rte', 'tle+rte')
Expected outcome for solutions that finish with either TLE or RTE.
Especially useful for environments where TLE and RTE are indistinguishable.
WRONG_ANSWER = alias('wrong answer', 'wa')
Expected outcome for solutions that finish successfully, but the produced output are incorrect (WA).
Generator
GeneratorCall
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
The name of the generator to call. |
required |
args |
str | None
|
The arguments to pass to the generator. |
None
|
Source code in robox/box/schema.py
Package
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
The name of the problem. |
required |
timeLimit |
int
|
Time limit of the problem, in milliseconds. |
required |
memoryLimit |
int
|
Memory limit of the problem, in MB. |
required |
checker |
CodeItem | None
|
The checker for this problem. |
None
|
validator |
CodeItem | None
|
The validator for this problem. |
None
|
generators |
List[Generator]
|
Generators for this problem. |
[]
|
solutions |
List[Solution]
|
All tested solutions for this problem. The first solution in this list should be the main solution -- the one
that is correct and used as reference -- and should have the |
[]
|
testcases |
List[TestcaseGroup]
|
Testcases for the problem. |
[]
|
stresses |
List[Stress]
|
Stress tests for the problem. |
[]
|
statements |
List[Statement]
|
Statements for the problem. |
[]
|
vars |
Dict[str, Union[str, int, float, bool]]
|
Variables to be re-used across the package. |
{}
|
Source code in robox/box/schema.py
Solution
Bases: CodeItem
Parameters:
Name | Type | Description | Default |
---|---|---|---|
outcome |
ExpectedOutcome
|
The expected outcome of this solution. |
required |
Source code in robox/box/schema.py
Stress
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
The name of the stress test. |
required |
generator |
GeneratorCall
|
Generator pattern to call during stress-test. |
required |
solutions |
List[str]
|
Path of the solutions to be stress-tested. If empty, will stress-test only the main solution for non-WA verdicts. |
[]
|
outcome |
ExpectedOutcome
|
What verdict to look for while stress-testing. |
INCORRECT
|
Source code in robox/box/schema.py
Testcase
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
inputPath |
Path
|
The path of the input file. |
required |
outputPath |
Path | None
|
The path of the output file. |
None
|
Source code in robox/box/schema.py
TestcaseGroup
Bases: TestcaseSubgroup
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subgroups |
List[TestcaseSubgroup]
|
A list of test subgroups to define for this group. |
[]
|
validator |
CodeItem | None
|
A validator to use to validate the testcases of this group. If not specified, will use the package-level validator. Useful in cases where the constraints vary across test groups. |
None
|
weight |
float | None
|
The weight of this group in the final score. Useful for problems that have points. |
1.0
|
Source code in robox/box/schema.py
TestcaseSubgroup
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
The name of the test group. |
required |
testcases |
List[Testcase]
|
The path of testcases to add to this group, in the order they're defined. |
[]
|
testcaseGlob |
str | None
|
A Python glob that matches input file paths relative to the package directory. The globbed files should end with the extension ".in", and their corresponding outputs, if defined, should have the same file name, but ending with ".out". |
None
|
generators |
List[GeneratorCall]
|
A list of generators to call to generate testcases for this group. |
[]
|
generatorScript |
CodeItem | None
|
A generator script to call to generate testcases for this group. |
None
|
Source code in robox/box/schema.py
Statements
Statement
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
title |
str
|
Name of the problem, as it appears in the statement. |
required |
path |
Path
|
Path to the input statement file. |
required |
type |
StatementType
|
Type of the input statement file. |
required |
steps |
List[Union[TexToPDF, JinjaTeX, roboxToTeX]]
|
Describes a sequence of conversion steps that should be applied to the statement file. Usually, it is not necessary to specify these, as they can be inferred from the input statement type and the output statement type, but you can use this to force certain conversion steps to happen. |
[]
|
configure |
List[Union[TexToPDF, JinjaTeX, roboxToTeX]]
|
Configure how certain conversion steps should happen when applied to the statement file. Different from the |
[]
|
assets |
List[str]
|
Assets relative to the package directory that should be included while building
the statement. Files will be included in the same folder as the statement file, preserving
their relativeness. Can be glob pattern as well, such as |
[]
|
language |
str
|
Language this is statement is written in. |
'en'
|
Source code in robox/box/statements/schema.py
StatementType
Bases: AutoEnum
Source code in robox/box/statements/schema.py
roboxTeX = alias('robox-tex', 'rbx-tex', 'rbx')
Statement written in roboxTeX format.
TeX = alias('tex')
Statement written in pure LaTeX format.
JinjaTeX = alias('jinja-tex')
Statement written in LaTeX format with Jinja2 expressions.
PDF = alias('pdf')
Statement is a PDF.
Conversion nodes
ConversionType
Bases: str
, Enum
Source code in robox/box/statements/schema.py
JinjaTeX = 'jinja-tex'
class-attribute
instance-attribute
Conversion from LaTeX with Jinja2 expressions to LaTeX.
TexToPDF = 'tex2pdf'
class-attribute
instance-attribute
Conversion from LaTeX to PDF using pdfLaTeX.
roboxToTex = 'rbx-tex'
class-attribute
instance-attribute
Conversion from roboxTeX to LaTeX.
JinjaTeX
Bases: BaseModel
Parameters:
Name | Type | Description | Default |
---|---|---|---|
type |
Literal[ConversionType]
|
|
required |
Source code in robox/box/statements/schema.py
JoinTexToPDF
Bases: BaseModel
Configures the joining of contest and problem texes to PDF.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
type |
Literal[JoinerType]
|
|
required |
Source code in robox/box/statements/schema.py
JoinerType
Bases: str
, Enum
Source code in robox/box/statements/schema.py
TexToPDF = 'tex2pdf'
class-attribute
instance-attribute
Join contest tex and problem texs to PDF using pdfLaTeX.
TexToPDF
Bases: BaseModel
Configures the conversion between LaTeX and PDF using pdfLaTeX.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
type |
Literal[ConversionType]
|
|
required |
Source code in robox/box/statements/schema.py
roboxToTeX
Bases: BaseModel
Configures the conversion between roboxTeX and LaTeX.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
type |
Literal[ConversionType]
|
|
required |
template |
Path
|
Path to the template that should be used to render the rbx-tex blocks. |
PosixPath('template.rbx.tex')
|