Formatul XMC
Formatul XMC reprezinta totalitatea formatelor lui XMC pentru stocarea datelor in sistemul de fisiere.
Grader (corector)
Un grader, in formatul XMC, este un fisier cod sursa cu filename-ul de forma numecorector.ext
, unde numecorector
este numele unic al programului corector, iar ext
este extensia specifica limbajului de programare in care este scris.
Exemplu
Urmatorul fisier este un grader numit simplegrader
scris in C:
#include <stdio.h>
int main() {
printf("This grader is pretty dumb\n");
return 0;
}
Datasets (seturi de date)
Un set de date reprezinta un folder al carui nume este numele unic al setului de date. Acesta contine un fisier dataset.yaml
care stocheaza informatii specifice setului de date, impreuna cu un folder numit testcases
care contine fisierele de test ale setului de date.
Folderul testcases
tine pentru fiecare test cate doua fisiere: un fisier de intrare, test1.in
de exemplu, si un fisier de iesire, test1.out
. Formatul numelui fisierelor este test#.in
/test#.ok
, unde #
este numarul testului. Testele se numeroteaza de la 1 si trebuie sa fie consecutive.
Fisierul dataset.yaml
are urmatoarea structura:
description: Descriere a setului de date
grader_name: example_grader
memory_limit: 1024
time_limit: 1.23s
Fisierul dataset.yaml
trebuie sa fie un fisier valid YAML. Limita de memorie este o valoare intreaga in bytes, iar limita de timp respecta formatul functiei time.ParseDuration
din libraria standard Go. Pe scurt, este o secventa de numere rationale, cu partea fractionara optionala, si un sufix care reprezinta unitatea de timp. Suxifele valide sunt "ns", "us", "ms", "s", "m" si "h".
Exemplu
Urmatorul set de date se numeste permuations_easy
.
permutations_easy
├── dataset.yaml
└── testcases
├── test10.in
├── test10.ok
├── test1.in
├── test1.ok
├── test2.in
├── test2.ok
├── test3.in
├── test3.ok
├── test4.in
├── test4.ok
├── test5.in
├── test5.ok
├── test6.in
├── test6.ok
├── test7.in
├── test7.ok
├── test8.in
├── test8.ok
├── test9.in
└── test9.ok
1 directory, 21 files
dataset.yaml
:
description: Teste de dificultate redusa pentru problema permutarilor.
grader_name: basic_grader
memory_limit: 8192
time_limit: 0.45s
Tasks (sarcini, probleme)
Un task este un director al carui nume este numele unic al task-ului. Acesta contine numai un singur fisier task.yaml
care stocheaza informatii ce definesc task-ul.
Fisierul task.yaml
are urmatoarea structura:
description: Descrierea task-ului
dataset_name: example_dataset
input_file: problema.in
output_file: problema.out
Fisierul trebuie sa fie un fisier valid YAML. Fisierele de intrare si de iesire pot avea valorile stdin
, respectiv stdout
.
Exemplu
Urmatorul task se numeste addition
:
addition
└── task.yaml
0 directories, 1 file
task.yaml
:
description: Adunare simpla
dataset_name: addition.1
input_file: addition.in
output_file: addition.out
Last updated