Diferente pentru documentatie/evaluator intre reviziile #9 si #43

Nu exista diferente intre titluri.

Diferente intre continut:

h1. Evaluatorul infoarena
==include(page="template/todo")==
== include(page="documentatie/sidebar")==
... este responsabil de evaluarea solutiilor trimise de utilizator.
Iata *lista oficiala* de compilatoare folosite de evaluatorul infoarena:
|_. Compilator si versiune|_. Comanda de compilare |_. Extensie implicita |
| GNU GCC ???             | $gcc -Wall -O2 -static … -lm$ | c |
| GNU G++ ???             | $g++ -Wall -O2 -static … -lm$ | cpp |
| FreePascal Compiler ??? | $fpc -O2 -Xs …$               | pas |
| FreePascal Compiler ??? | $fpc -O2 -Xs …$               | fpc |
table{width:80%}. |_. Compilator si versiune|_. Comanda de compilare |_. Extensie implicita |
| GNU GCC 10.2.0 | $gcc -DINFOARENA -Wall -O2 -std=c11 -static … -lm$ | c |
| GNU G++ 10.2.0 | $g++ -DINFOARENA -Wall -O2 -std=c++14 -static … -lm$ | cpp |
| FreePascal Compiler 3.0.0 | $fpc -O2 -Xs … -dINFOARENA$               | pas |
| OpenJDK Java 11.0.16 | $javac …, java -Xmx512m -Xss128m -DONLINE_JUDGE=true -Duser.language=en -Duser.region=US -Duser.variant=US …$ | java |
| Python 3.9.2 | $python3 …$ | py |
| Rust 1.64.0 | $rustc --edition 2021 -O …$ | rs |
h2. Configuratia sistemului de evaluare
Evaluatorul ruleaza pe un calculator dedicat, oferit de ==User(type="tiny" user="fluffy")==. (Multumim, Leo!)
 
* Sistem de operare: Debian stable(sarge)
* Procesor: Pentium IV, $2.0 GHz$
* Memorie: $512 MB RAM$
 
Cu exceptia cazurilor in care se mentioneaza explicit, memoria este limitata astfel:
 
* Data: $63 MB$
* Stack: $1 MB$
 
h2. Gazduire !>documentatie/evaluator?hqn.png!
 
Evaluatorul infoarena este gazduit cu placere de catre "HQN (High Quality Networks)":http://hqn.ro/.
* Sistem de operare: Debian 11
* Procesor: Intel Pentium(R) Dual-Core CPU E6600 @ 3.07GHz
* Memorie: $8GB RAM$
 
h2. Mesaje de evaluare
 
Pentru cei care nu sunt familiari cu sistemele unix sau sunt incepatori in programare, multe dintre mesajele evaluatorului pot parea oarecum criptice.
 
* Eroare de sistem: Daca ai obtinut aceast mesaj te rugam sa ne contactezi, preferabil pe 'forum':forum. Te rugam sa mentionezi si id-ul job-ului.
* OK: Totul a functionat perfect.
* Memory limit exceeded: Ai depasit limita de memorie. Majoritatea problemelor au o limita de 64 de mega, pe care noi o consideram destul de generoasa.
* Time limit exceeded: Programul tau a depasit limita de timp. Asta inseamna ca programul tau nu este destul de rapid.
* Wall time limit exceeded: Evaluarea a durat prea mult si a fost abandonata. Evaluatorul infoarena masoara doar timpul folosit de programul tau pentru a determina daca iti da TLE, dar exista si o limita fata de "ceasul de perete". Acest mesaj poti sa il obtii daca faci sleep, scanf de la stdin si alte functii care stau degeaba fara sa consume efectiv procesorul.
* Blocked system call: Ai accesat o functie la care nu ai access. Nu ar trebui sa primesti aceasta functie decat daca incerci explicit sa faci ceva interzis.
* Killed by signal: Cea mai frecventa eroare cand ai un bug in program. Cand un program incalca anumite conventii in UNIX acel program primeste un "semnal" care de cele mai multe ori il opreste. Cateva semnale comune:
** 11(SIGSEGV): Segmentation fault. Asta in 99% din cazuri inseamna ca ai probleme cu accesul la memorie. Ai iesit din limitele unui vector, ai facut stack overflow, etc.
** 8(SIGFPE): Floating point error. Cauzat cel mai frecvent de impartiri la 0.
* Non-zero exit status: Programul tau a returnat o valoare diferita de 0. Cel mai probabil ai uitat return 0; sau ceva similar. Poti primi acest mesaj si in loc de mesajul "Killed by signal": verifica si dupa erorile mentionate deasupra.
 
Evaluatoarele problemelor iti vor da si ele un mesaj scurt, cel mai frecvent ceva de genul "OK" sau "Wrong Answer", dar unii propunatorii au umor :).
 
h2. Troubleshooting
 
Pentru programatorii in Borland C/Pascal este important de tinut minte ca evaluatorul infoarena este un mediu *foarte* diferit fata de dos. Cateva erori comune si cum pot fi rezolvate
 
* Pe infoarena se face I/O din fisiere, nu de la stdin, stdout (cu exceptia problemelor 'interactive':documentatie/tutorial#probleme-interactive). Daca faci scanf de la stdin vezi obtine cel mai probabil "Wall time limit exceeded" (vezi mai sus) iar daca faci printf la stdout rezultatul tau va fi ignorat.
* tipul int din GCC este pe 32 de biti, nu 16 ca in Borland C/C++, char - 8 biti, short - 16 biti, long - 32, long long - 64
* folositi sprintf in loc de itoa sau ltoa.
* programul de evaluare ruleaza pe un sistem de operare UNIX. Folositi "\n" pentru terminarea liniei curente, nu "\r\n"
* aveti grija ca functia main sa fie de tip int si sa intoarca 0 (return 0;)
* nu folositi librarii dependente de sistemul de operare (ex. dos.h, graphics.h in C sau dos, crt, graph in pascal). Aceste librarii nu sunt necesare pentru a rezolva problemele de pe infoarena.
* nu folositi modificatorii far, huge, _huge, __huge pentru ca nu exista in GCC. De asemenea, nu exista nici functiile care folosesc aceste tipuri de date (de ex. farmalloc, farfree etc.) si nici conceptul de memory model (tiny, small, medium, large, huge). De toate acestea nu mai e nevoie intrucat puteti avea acces la toata memoria prin functii standard si pointer-i standard - new, delete, malloc etc.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.