Afişează mesaje
Pagini: [1]
1  Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: OJI 2015 - NEDUMERIRE : Martie 09, 2015, 17:42:35
Functia itoa nu apare in niciun standard, ar trebui sa folosesti sprintf(str, "%d", nr); in locul ei.

Interesant insa ca pe calculator ti-a mers. Mi s-ar parea normal sa se foloseasca la evaluare exact compilatorul de pe calculator. Deci si mie mi se pare aiurea ca ai primit compile error.
2  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: OJI 2015 : Martie 07, 2015, 18:09:04
Am pus si la gimnaziu

https://mindcoding.ro/oji5
https://mindcoding.ro/oji6
https://mindcoding.ro/oji7
https://mindcoding.ro/oji8
3  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: Turneul International de Informatica Shumen 2013 : Noiembrie 23, 2013, 22:24:30
Am pus rezultatele la http://ieval.ro/~marius/shumen/.
4  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: ONI 2013 : Aprilie 12, 2013, 19:06:29
Verificator.exe nu merge pe linux fara wine ( nu stiu cum se comporta exact daca e cu wine .. )

Si eu vreau sa lucrez pe linux ^^

Verificator.exe nu e evaluatorul, ci un script/executabil care configureaza evaluatorul cu exemplele/limitele problemelor din ziua urmatoare. Evaluatorul efectiv e instalat odata cu instalarea calculatorului, si merge pe ambele.
5  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: ONI 2013 : Aprilie 12, 2013, 01:34:25
In principal, ideea acelui evaluator ar fi sa iti ruleze sursa si sa iti spuna timpul si memoria folosita pentru exemplu. Nu cred ca ar avea rost sa iti spuna daca sursa ta da raspuns corect pe exemplu, pentru ca sa verifici tu manual chestia asta nu ar fi mare chestie, insa ar fi foarte bine daca acel evaluator ti-ar spune timpul si memoria folosita pe orice test dat de tine.

Din blogpost-ul lui Petru:
Citat
Din moment ce la olimpiadele și concursurile internaționale exista feedback parțial mi s-ar părea normal ca și la selecția pentru ele să existe feedback. Mi se pare o prostie sa iei 0 puncte pe o problemă pentru că ai MLE sau pentru că nu ai respectat cu strictețe formatul fișierului de ieșire

E important sa iti spuna daca e bun raspunsul, pentru a nu lua 0 puncte cu presentation error. Un exemplu de evaluator care respecta cerintele lui Petru (spune timp, memorie, raspuns corect/gresit) se afla pe pagina 1.
6  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: ONI 2013 : Aprilie 10, 2013, 09:40:16
V-ati gandit ca "evaluatorul"/"verificatorul" trebuie instalate inaintea fiecarei probe(pentru ca sunt alte probleme)? Asta e genul de munca care ocupa prea mult timp si pentru care sunt prea putini oameni.

Se poate face la salvarea surselor: cei care salveaza sursele sa aiba pe stick un script care sa instaleze evaluatorul pentru proba urmatoare.

O alta varianta ar fi sa fie evaluatorul preloaded cu toate problemele de la toate probele. Participantul nu poate vedea testele, si sa trimita surse la o problema la care nu stie enunt/input/output nu il poate ajuta cu nimic.
7  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: ONI 2013 : Aprilie 10, 2013, 00:21:16
Cred ca un evaluator local nu ar fi greu de facut.

De acord.

S-ar putea instala pe fiecare calculator o copie locala de infoarena sau o varianta mai simple a infoarenei.

Se poate mai simplu….

Eu sugerez un executabil caruia ii dai un fisier sursa, si apoi il compileaza si evalueaza si iti da rezultatul. De implementat e foarte simplu:

~/eval/Makefile
Cod:
%:%.c
gcc -lm -O2 -Wall -Wextra -pedantic -Wno-long-long -std=gnu99 -o $@ $< 2>&1

%:%.pas
fpc -O2 -veiwn -TLINUX -Xt -o$@ $< 2>&1
rm [email protected]

%:%.cxx
g++ -lm -O2 -Wall -Wextra -pedantic -Wno-long-long -fabi-version=0 -ftemplate-depth=100 -o $@ $< 2>&1

%:%.m
gcc -lm -O2 -Wall -Wextra -pedantic -o $@ $< 2>&1

clean:
rm -vf *.out sursa*

~/eval/eval
Cod:
#!/usr/bin/perl -w
use v5.14;
use File::Copy qw/cp/;

use constant TIME_LIMIT_SECONDS => 1;
use constant MEMORY_LIMIT_KBYTES => 100000;

sub error{
  system 'zenity', '--error', "--text=$_[0]";
  exit 1
}

##################################################

my $file=`zenity --file-selection` or error 'Nu ati ales fisierul';
my $extensie=`zenity --list --column x --column 'Limbaj' --hide-column=1 pas Pascal c C cxx C++ m Objective-C` or error 'Limbaj inexistent';
chomp $file;
chomp $extensie;
cp $file, "sursa.$extensie";

system ('make', 'sursa') == 0 or error "Compile error";
my @lines=`/usr/bin/time -v ./sursa 2>&1` or error "Non-zero exit status";
my ($memline) = grep /.*Maximum resident set size.*:/, @lines;
my $mem = ($memline =~ /: (.*)$/)[0];

my ($timeline) = grep /.*User time.*/, @lines;
my $time = ($timeline =~ /: (.*)$/)[0];

error 'Time limit exceeded' if $time > TIME_LIMIT_SECONDS;
error 'Memory limit exceeded' if $mem > MEMORY_LIMIT_KBYTES;

system ('./verificator') == 0 or error "Incorect!";

system 'zenity', '--info', "--text=Totul merge!\nTimp: $time secunde\nMemorie: $mem kbytes";

Pe langa astea doua fisiere, mai trebuie un fisier de input si un verificator, adica script/program care spune daca rezultatul e bun sau nu. Pentru programul aplusb, sugerez urmatoarele doua fisiere:

~/eval/aplusb.in
Cod:
1 2

~/eval/verificator
Cod:
#!/usr/bin/perl -w

use File::Slurp qw/read_file/;

exit !(int(scalar read_file 'aplusb.out') == 3)

Atentie: verificatorul nu trebuie sa fie inteligent, trebuie doar sa stie sa raspunda corect pe inputul de mai sus.

Dependencies: zenity si File::Slurp. Pe un sistem debian se pot instala prin comanda:
Cod:
aptitude install zenity libfile-slurp-perl

Desigur, este nevoie si de cateva din compilatoarele gcc (pentru C), g++ (pentru C++), fpc (pentru Pascal), gobjc (pentru Objective-C).

Pentru cei care nu au chef de copy-paste, puteti lua un tar cu cele patru fisiere de mai sus de la http://ieval.ro/~marius/eval.tar. Rulati fisierul eval pentru a evalua o sursa la aplusb.

Edit: Am modificat evaluatorul sa poata evalua mai multe probleme, linkul de mai sus are varianta noua.

Evaluatorul de mai sus nu opreste programul daca este depasit timpul de executie sau memoria, ci doar raporteaza la sfarsit daca programul a depasit timpul/memoria. Fiind un evaluator local, este in interesul utilizatorului sa nu "evalueze" un infinite loop.

Implementarea acestui evaluator pe un sistem Windows este lasat ca un exercitiu pentru cititor.
8  Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: ONI 2013 : Martie 21, 2013, 12:59:28
adica in primul rand trebuie sa lucrez pe linux, si daca-mi compileaza nu e totusi sigur ca o sa-mi mearga si pe evaluator ? ar fi nasol sa belesc si cateva teste la un brute din cauza ca nu compileaza.

Mi s-ar parea normal ca evaluatorul sa foloseasca aceiasi versiune de gcc si de glibc pe care o au si calculatoarele pe care dai ONI. Astfel, ar fi normal ca daca ceva se compileaza pe calculatoare pe linux, sa se compileze si pe evaluator.

Folosesc "mi s-ar parea normal" si "ar fi normal" deoarece nu sunt membru al comisiei tehnice si astfel nu pot sti cu siguranta ce si cum se va intampla la ONI. In ceea ce ma priveste, eu la ONI o sa consider ca daca mi se compileaza pe calculator mi se compileaza si pe evaluator.
9  Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: ONI 2013 : Martie 21, 2013, 12:18:49
am citit ca la ONI se compileaza cu standardul C++ 98. Nu stiu cu ce se evalueaza pe infoarena, dar sunt surse care fac #include si tr1 si folosesc librarii din C++ 11. Intreb pentru ca ma intereseaza daca as putea sa folosesc tr1/unordered_set Smile

unordered_set si toate cele au fost introduse in TR1, care e un set propus de adaugiri la C++03. Pana la aparitia C++11, stateau toate in namespace-ul std::tr1. Odata cu aparaitia lui C++11, au fost facute mai "oficiale" si au fost copiate in namespace-ul std.

gcc are un parametru, -std, care ii spune ce standard de C++ vrei sa urmeze. Cei de la ONI sigur nu il seteaza, asa ca se foloseste valoarea default, -std=gnu++98. Asta nu e tocmai C++98 precum i-ar indica numele, ci e C++03 cu diverse manarii gcc-specific. In practica, poti folosi TR1 in asta.

Exemplu de program care foloseste TR1:

Cod:
#include<cstdio>
#include<tr1/unordered_set>

static std::tr1::unordered_set<int> st;

int main(void){
    int a;
    scanf("%d",&a);
    st.insert(a);
    if(st.count(a))
        puts("Numarul pe care tocmai l-am pus in unordered_set se afla in unordered_set. Totul e in regula.");
    else
        puts("Numarul pe care tocmai l-am pus in unordered_set nu se afla in unordered_set. glibc isi bate joc de mine.");
    return 0;
}

Eu zic ca, in principiu, daca un program se compileaza pe calculatorul pe care dai ONI, se compileaza si pe evaluatorul ONI. Poti folosi acest lucru pentru a determina daca ceva se compileaza pe evaluator.
10  Comunitate - feedback, proiecte si distractie / Blog / Răspuns: Haideti sa imbunatatim Infoarena impreuna! : Noiembrie 06, 2012, 20:48:56
Ar fi util sa adaugati macro-ul ONLINE_JUDGE de pe UVA,Timus,SGU,SPOJ,etc care sa ne spuna daca programul ruleaza sub infoarena. E o schimbare de 2 linii, liniile 38 si 39 din eval/utilities.php
11  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Eroare la configurarea problemei : Octombrie 16, 2012, 12:12:52
Am reusit sa obtin 'Eroare la configurarea problemei' cu 3 surse proaste:
http://infoarena.ro/job_detail/796044
http://infoarena.ro/job_detail/796071
http://infoarena.ro/job_detail/796263
12  infoarena - concursuri, probleme, evaluator, articole / FMI No Stress 2010 / Răspuns: Nc : Decembrie 12, 2010, 11:38:39
Intrebare 1: Este virgula separator de cuvinte?
(ex pt fraza "a,,b." se considera 2 cuvinte?)
Intrebare 2: Este newline separator de fraze?
Intrebare 3: Este newline separator de cuvinte?
13  Comunitate - feedback, proiecte si distractie / Feedback infoarena / SIGABRT : Iunie 22, 2010, 10:55:29
Am rezolvat o problema(Kdrum) si am trimis sursa dar primesc pe 5 teste MLE iar pe celelalte 5 SIGABRT. Cu MLE-ul mai rezolv, dar de la ce imi da SIGABRT?
14  infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2010 / Intrebare: Binar : Martie 21, 2010, 11:10:28
Este corecta afirmatia:
Un sir A este mai mic din punct de vedere lexicografic decat un sir B daca exista o pozitie j astfel incat A[1]==B[1]; A[2]==B[2];....;A[j-1]==B[j-1] si A[j]<B[j]?
15  infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2009 / Răspuns: Algoritmiada 2009, Runda Finala : Mai 02, 2009, 08:55:26
acum ora de incepere e 10... Smile
16  infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2009 / Răspuns: Algoritmiada 2009, Runda Finala : Mai 02, 2009, 08:51:01
cica incepe la 11.
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines