creo
helps you do pretty much anything about creating problems, especially on AtCoder, such as testing, generating and validating. creo
achieves them with interoperability.
A creo
project manages a collection of files needed to prepare for a single problem. creo
provides a functionality to manage it.
creo
's capabilities include:
- test/validate/generate automatically
- interoperate with coworkers who do not use
creo
- Shell scripts that automatically run tasks (e.g. validation, generation) will be provided
- Other than
creo.toml
, nocreo
-specific files will be created in project directories
- test/validate/generate better than provided scripts
- Results are cached in temporary directories
Limitations are:
creo
does not support testing multiple problems in a problemset. If you want to do this, you need to do it manually (e.g. runningcreo
in each subdirectory.)
creo
expects the following directory structure for each project.
- creo.toml (configuration file)
- etc/
|- etc/score.txt
|- etc/val-xxxx.cpp
|- etc/gen-xxxx.cpp
|- etc/output_checker.cpp
|- etc/testlib.h
:
:
- in/
|- in/1.txt
|- in/2.txt
:
:
- out/
|- out/1.txt
|- out/2.txt
:
:
- sol/
|- sol/xxxx.cpp
|- sol/yyyy.cpp
|- sol/zzzz-wa.cpp
:
:
- task/
|- ja.md
|- en.md
:
:
creo init DESTINATION
will create a directory with the aforementioned structure at DESTINATION
. Missing intermediate directories will be automatically created.
If DESTINATION/creo.toml
already exists, the creation process will fail.
creo add PROJECT TYPE OUTFILE
will add a file of the designated type.
TYPE
can be one of the following:
val
: validator (inetc/
)gen
: generator (inetc/
)sol
: solution (insol/
)
If TYPE
is val
or gen
and testlib.h
is missing, it will be automatically added.
Available options are:
val
: nothinggen
: nothingsol
:--wa
: the solution should emit a wrong output--tle
: the solution should fail to finish in the given time limit
creo gen PROJECT
will generate input data in PROJECT
.
creo refgen PROJECT
will generate output data in PROJECT
.
Available options are:
--skip-in
: skip generating input files. This may be useful for scripting.
creo test
will test all solutions in sol/
, checking if they behave as they are intended.
creo publish
will publish all files in the project to the judge server.
Authentication must be given in creo.toml
- TODO: decide the format
creo check PROJECT
will check whether PROJECT/creo.toml
is correct and if so, display its content.