Nu aveti permisiuni pentru a descarca fisierul grader_test8.ok
Diferente pentru limeeval intre reviziile #20 si #37
Nu exista diferente intre titluri.
Diferente intre continut:
h1=. *LimeEval*
table{border-style: hidden}. |\350/2^~. * Este un evaluator gratuit pentru mediul Windows, care automatizeaza procesului de compilare si punctare a problemelor de natura algoritmica. * Creat in special pentru a aduce suport schimbarilor necesare Olimpiadei Judetene de Informatica, *trecerea la compilatoare pe 32 de biti* * Destinat OJI-ului si a concursurilor de informatica (interjudetene, pe clasa etc..) pentru a facilita o compilare si evaluare a concurentilor automatizata intr-un mediu sigur. * Destinat elevilor si profesorilor care sustin o activitate de pregatire la informatica cu probleme de concurs <br> Linkurile de download sunt in dreapta. Pentru a rula evaluatorul aveti nevoie de un sistem de operare Windows XP, si framework-ul .NET 2.0 instalat. <br> (toc){width:100px}* *{'Screenshots':limeeval#screenshots}* * *{'Structura de fisiere a evaluatorului':limeeval#structura}* * *{'Instructiuni de folosire':limeeval#instructiuni}* ** {'Tutorial 1 : Instalare si configurare compilatoare':limeeval#t1} ** {'Tutorial 2 : Creare si definire runda':limeeval#t2} ** {'Tutorial 3 : Compilarea si evaluarea unei runde definite anterior':limeeval#t3} ** {'Tutorial 4 : Consola grafica - warninguri si erori':limeeval#t4} ** {'Tutorial 5 : Rulare evaluator in mod consola':limeeval#t5} * *{'Download runde':limeeval#dlrunde}* * *{'Intrebari frecvente (FAQ)':limeeval#intrebari}* * *{'Sursa verif':limeeval#verif}* <br> |-=. !limeeval?lime_logo.png!| |^. (toc){width:340px}* *Versiune* : ** {'0.9.3.11':limeeval?lime.exe} * *Framework .NET* : ** {'2.0':http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en} * *Functii generale* : ** - mod consola / mod grafic ** - configurare completa din interfata ** - compilare automata surse concurenti (selectiva sau totala) ** - posibilitate de specificare a compilatoare multiple ** - directive custom de compilare ** - salvare output compilatoare pe fiecare sursa ** - xml generat cu rezultatele compilarii tuturor concurentilor ** - evaluare (selectiva sau totala) in mod sandbox ** - limitare de timp si limitare de memorie ** - evaluare test cu test, sau rapida ** - salvarea in fisier individual outputului produs de fiecare concurent pe fiecare test ** - salvare in fisier individual rezultate evaluare pe fiecare test (punctaj, timp, memorie, mesaj verif) ** - xml generat cu rezultatele totale ale evaluarii ** - curatare foldere concurenti \ filtrare surse \ redenumire surse ** - error reporting, exceptii, warninguri, erori, salvate in fisiere si afisate in consola grafica * *To Do* : ** - clasament real time, si detasat din tab control ** - exportare borderouri in *.txt-uri individuale pentru fiecare concurent ** - exportare clasament in *.xls (Excel) * *Buguri cunoscute* : ** - in timpul evaluarii in mod grafic (fara pauza), daca se tot face resize la tabel, aplicatia se blocheaza. (thread deadlock) |
h5=. *Aceasta pagina are nevoie de o rescriere totala, pentru a fi actuala cu versiunea curenta a evaluatorului, corectat de buguri si cu new features. Pagina va fi rescrisa la lansarea versiunii 1.0*
<br><br>
Sunt ocupat cu bac-ul acuma, nu mai am timp sa curat sursa si sa o pun la liber, dar dupa BAC, am sa fac niste documentatie, si instructiuni de utilizare videouri etc.. si o sa lansez proiectul ca Open Source
h3(#screenshots). *Screenshots* !limeeval?1.png!:http://i27.tinypic.com/2ljklxu.jpg !limeeval?2.png!:http://i25.tinypic.com/14uvtwo.png !limeeval?3.png!:http://i32.tinypic.com/mio3yq.png !limeeval?4.png!:http://i31.tinypic.com/2vnnp00.png !limeeval?5.jpg!:http://i29.tinypic.com/2mpyc95.jpg !limeeval?6.jpg!:http://i28.tinypic.com/2u43qe0.jpg
Ultimul build e din /05/26, modificari la autodetectarea idurilor si functii de curatare. Enjoy.
<br><br><br> h3(#structura). *Structura de fisiere a evaluatorului* In folderul root al evaluatorului : |\100. %{color:green}lime.exe% | Executabilul evaluatorului | |\100. %{color:blue}compilatoare.xml% | Fisier de configurare a compilatoarelor | |\100. %{color:#e67658}errlog.txt% | Fisier unde se scriu unele erori si warninguri | *! Numele de mai jos sunt doar exemple nu sunt fixe, ele depind de configurarea fiecarei runde* Undeva pe disc : |\150. %{color:blue}fisier_runda.xml%|Fisier de configurare al unei runde| |\150. %{color:#d1ac3b}/surse/%|Folder unde se vor pune folderele personale fiecarui id| In surse se poate copia orice. Folderele si fisierele care nu sunt solutii la probleme si nu au extensiile valide *vor fi sterse* | %{color:#d1ac3b}/surse/1/% | Folderul id-ului nr 1 | | %{color:#d1ac3b}/surse/2/% | Folderul id-ului nr 2 | | %{color:#d1ac3b}/surse/3/% | Folderul id-ului nr 3 | |\85. %{color:#d1ac3b}/teste/% | Folderul cu testele problemelor | Pentru fiecare problema specificata in fisierul cu teste trebuie sa fie un folder cu numele acesteia. Acesta trebuie sa contina testele de intrare, testele de iesire corecte si un (verificator) %{color:green}verif.exe% - care verifica corectitudinea raspunsului concurentului pe out-ul produs de acesta. (mai multe in "Intrebari frecvente":(#intrebari) ) |\0. %{color:#d1ac3b}/teste/problema1/% | Folder pentru problema1 | |\0. %{color:#d1ac3b}/teste/problema2/% | Folder pentru problema2 | |\125. %{color:#d1ac3b}/bin/% | Aici se vor pune sursele compilate ale concurentilor | Se va creea de catre evaluator pentru fiecare id un folder cu valoarea id-ului, si pentru fiecare compilator cu care s-au compilat sursele concurentului, va exista un folder si in fiecare folder va exista un executabil, cu numele problemei compilate (Daca compilarea a avut succes). Ex : | %{color:#green}/bin/1/g++/problema1.exe% | Binarul creat pentru concurentul cu id-ul 1, pentru sursa sa la problema1, compilata cu g++ | | %{color:#green}/bin/1/fpc/problema1.exe% | Binarul creat pentru concurentul cu id-ul 1, pentru sursa sa la problema1, compilata cu fpc| | %{color:#green}/bin/1/gcc/problema2.exe% | Binarul creat pentru concurentul cu id-ul 1, pentru sursa sa la problema2, compilata cu gcc | | %{color:#d1ac3b}/eval/% | Aici se vor evalua binarele concurentilor | In acest folder se vor copia in mod repetat fisiere in, se vor redenumi, se vor copia binarele concurentilor, in acest folder se vor rula, aici se va rula verif-ul etc.. (Vezi : Cum se produce evaluarea? in "Intrebari frecvente":(#intrebari) ) | %{color:#d1ac3b}/rezultate/% | Acesta este folderul unde se vor scrie rezultate. In acest folder se vor creea 3 foldere | | %{color:#d1ac3b}/rezultate/compilare/% | Aici se vor pune rezultatele compilarii | | %{color:#d1ac3b}/rezultate/evaluare/% | Aici se vor pune rezultatele evaluarii| | %{color:#d1ac3b}/rezultate/log/% | Aici se vor scrie loguri, cu probleme aparute in timpul compilarii si evaluarii | Evaluatorul va crea (depinde de flagurile cu care este rulat), fisiere xml cu rezultatele totale ale compilarii si evaluarii | %{color:blue}/rezultate/compilare/rezultat_compilare.xml% | Rezultate totale ale compilarii | | %{color:blue}/rezultate/evaluare/rezultat_evaluare.xml% | Rezultate totale ale evaluarii | In %{color:#d1ac3b}/rezultate/compilare/% se va creea pentru fiecare id, si pentru fiecare compilator folosit un folder, in care se vor pune fisiere de forma : "problema.compilator" , in care va fi exact outputul produs de compilator. De ex : g++-ul si gcc-ul, la o compilare reusita, scrie 2-3 linii noi. La o compilare gresita e stackul de erori. Ex : %{color:#e67658}/rezultate/compilare/1/g++/problema.g++% In %{color:#d1ac3b}/rezultate/evaluare/% pentru fiecare id si pentru fiecare compilator se vor creea fisiere de forma : | %{color:#e67658}problemaQ.out% | contine exact raspunsul concurentului la acea problema pe testul Q | | %{color:#e67658}problemaQ.rez% | contine rezultatul evaluarii. Pe prima linie un intreg (punctajul obtinut pe test) Pe a doua linie un intreg, memoria folosita pe acel test. Pe a 3-a linie un intreg, punctajul obtinut pe test Pe a 4-a lini eun mesaj (OK, Puntcaj Partial, Gresit, etc..) | In %{color:#d1ac3b}/rezultate/log/% se vor crea : | %{color:#e67658}compilare.txt% | Contine warninguri erori si exceptii aparute in timpul compilarii | | %{color:#e67658}evaluare.txt% | Contine warninguri erori si exceptii aparute in timpul evaluarii | <br> h3(#instructiuni). *Instructiuni de folosire* Instructiunile de folosire sunt sub forma de screenshoturi insotite de text explicativ si indicatii. p(#t1). "*Tutorial 1* - Instalare si configurare compilatoare":http://www.flickr.com/photos/14249976@N07/sets/72157604092678918/ p(#t2). "*Tutorial 2* - Creare si definire runda":http://www.flickr.com/photos/14249976@N07/sets/72157604097029643/ p(#t3). "*Tutorial 3* - Compilarea si evaluarea unei runde definite anterior":http://www.flickr.com/photos/14249976@N07/sets/72157604097113831/ p(#t4). *Tutorial 4* - ConsolaGrafica - warninguri si erori "img1":http://www.flickr.com/photos/14249976@N07/2325989309/ "img2":http://www.flickr.com/photos/14249976@N07/2325989433/ p(#t5). *Tutorial 5* - Rulare evaluator in mod consola "img1":http://www.flickr.com/photos/14249976@N07/2326813878/ "img2":http://www.flickr.com/photos/14249976@N07/2325996707/ "img3":http://www.flickr.com/photos/14249976@N07/2325996831/ "img4":http://www.flickr.com/photos/14249976@N07/2325996911/ "img5":http://www.flickr.com/photos/14249976@N07/2326814246/ "img6":http://www.flickr.com/photos/14249976@N07/2325997073/ "img7":http://www.flickr.com/photos/14249976@N07/2326814388/ "img8":http://www.flickr.com/photos/14249976@N07/2325997195/ <br> h3(#dlrunde). *Download runde* <br> h3(#intrebari). *Intrebari frecvente* (toc){width:340px}* *1. Runde* ** {'1.1 Ce este o runda?':limeeval#i1} ** {'1.2 Prin ce se defineste o problema intr-o runda?':limeeval#i2} ** {'1.3. Prin ce se defineste un id valid?':limeeval#i3} ** {'1.4 Ce path-uri catre foldere specifice sunt intr-o runda?':limeeval#i4} * *2. Compilatoare* ** {'2.1 Ce contine o configurare de compilatoare?':limeeval#i5} * *3. Compilare* ** {'3.1 Cum se produce compilarea?':limeeval#i6} * *4. Evaluare* ** {'4.1 Cum se produce evaluarea?':limeeval#i7} ** {'4.2 Ce trebuie sa indeplineasca \ implementeze un verificator?':limeeval#i8} * *5. Runtime* ** {'5.1 Ce se intampla in cazul unei exceptii aparute la rularea solutiei concurentului?':limeeval#i9} h4. *1. Runde* p(#i1). *1.1 Ce este o runda?* O runda e o colectie de probleme, iduri valide pentru acea runda, si path-uri catre foldere specifice. p(#i2). *1.2 Prin ce se defineste o problema intr-o runda?* * Un nume unic (sa nu mai existe in aceeasi runda o problema cu acelasi nume) * Un timp de executie (cat e limita de timp pe acea problema) * O limita de memorie (cat e limita de memorie pe acea problema) *nu specificati limita prea joasa*, de ex, este o limita inferioara de memorie necesara oricarui program compilat astfel incat el sa ruleze (chiar daca contine doar == code(cpp) | int main() { } == si nu foloseste nici o variabila). El totusi foloseste memorie pentru a rula. A se da o valoare astfel incat sa se tina cont de asta. * O masca de teste IN Adica ce nume au testele in. de ex : "test*.in" steluta se va inlocui cu numarul testului => (test1.in, test2.in ..) sau : problema.*I => (problema.I1, problema.I2 ..) * O masca de teste OUT (la fel ca si la in) * Un interval de teste, intre ce valoari avem teste, ex : teste de la 0 la 20 sau 1 la 10 * campul de autor al problemei este optional (nu are utilitate) p(#i3). *1.3. Prin ce se defineste un id valid?* p(#i4). *1.4 Ce path-uri catre foldere specifice sunt intr-o runda?* p(#i5). *2.1 Ce contine o configurare de compilatoare?* p(#i6). *3.1 Cum se produce compilarea?* p(#i7). *4.1 Cum se produce evaluarea?* p(#i8). *4.2 Ce trebuie sa indeplineasca \ implementeze un verificator?* p(#i9). *5.1 Ce se intampla in cazul unei exceptii aparute la rularea solutiei concurentului?* <br><br><br> h3(#verif). *Sursa verif* Verificatorul este necesar pentru a puncta fisierul OUT produs de concurent. Trebuie pus sub forma de executabil in fisierul cu testele problemei. Mai jos este o sursa generala de verificator. Sursa are implementate functii de comparare bit la bit, si a numarului din fisier. Pentru probleme cu solutii multiple sau un alt mod de verificare vor trebui implementate si alte functii de verificare a rezultatului. Shimbati #define-urile INFILE, OUTFILE, si OKFILE cu numele corespunzatoare. == code(cpp) | #include <stdio.h> /* !!! schimba <problema> cu numele problemei */ #define INFILE "problema.in" #define OUTFILE "problema.out" #define OKFILE "problema.ok" FILE *fIN, *fOUT, *fOK, *fV; bool openFiles(); /* deschide fisierele si verifica existenta lor */ void closeHandles(); /* inchide fisierele */ bool compareBitByBit(); /* compara out si ok, bit la bit */ bool compareNumber(); /* compara numerele din out si ok */ int main() { if(!openFiles()) return 0; if (compareBitByBit()) fprintf(fV, "10\nCorect"); else fprintf(fV, "0\nGresit"); closeHandles(); return 0; } bool openFiles() { fIN = fopen(INFILE, "r"); fOUT = fopen(OUTFILE, "r"); fOK = fopen(OKFILE, "r"); fV = fopen("punctaj.verif", "w"); if (!fIN) { fprintf(fV, "0\nFisier IN lipsa."); closeHandles(); return false; } if (!fOUT) { fprintf(fV, "0\nFisier OUT lipsa."); closeHandles(); return false; } if (!fOK) { fprintf(fV, "0\nFisier OK lipsa."); closeHandles(); return false; } return true; } void closeHandles() { if (fIN) fclose(fIN); if (fOUT) fclose(fOUT); if (fOK) fclose(fOK); if (fV) fclose(fV); } bool compareBitByBit() { char b1, b2; int ret1, ret2; while (1) { ret1 = fscanf(fOUT, "%c", &b1); ret2 = fscanf(fOK, "%c", &b2); if (ret1 > 0 && ret2 <= 0) return false; if (ret1 <= 0 && ret2 > 0) return false; if (b1 != b2) return false; if (ret1 <= 0 && ret2 <= 0) return true; } return true; } bool compareNumber() { int nr1, nr2; fscanf(fOUT, "%d", &nr1); fscanf(fOK, "%d", &nr2); if (nr1 != nr2) return false; return true; } ==
h3. {'LimeEval - build 0.9.5.26 (build 0.9.5.26)':limeeval?lime_v0.9.5.26.zip}