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.23sFisierul 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 filesdataset.yaml:
description: Teste de dificultate redusa pentru problema permutarilor.
grader_name: basic_grader
memory_limit: 8192
time_limit: 0.45sTasks (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.outFisierul 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 filetask.yaml:
description: Adunare simpla
dataset_name: addition.1
input_file: addition.in
output_file: addition.outLast updated