Calculul clasamentului

    Inca de la crearea acestei liste se simtea lipsa unui stimulent care sa faca lista frecventata mai mult decat o expozitie de pictura. Cei pasionati (si numai ei) au posibilitatea de a-si aprecia calitatea activitatii pe lista in raport cu ceilalti participanti, intr-o maniera asemanatoare sistemului ELO de la campionatele de sah.

    Fiecare participant va avea cate un coeficient numit DFCC (Dexteritate in Fentarea Comisiei de Corectare), masura incontestabila a activitatii lui laborioase pe lista. Unitatea de masura a coeficientului este dexterul (prescurtat Dex).

    Inscrierea unui participant in clasament se face automat la prima rezolvare trimisa. Cei care doresc se pot retrage din clasament printr-un mail explicit in acest sens la adresa probleme-owner@shock.ldc.ro. Aceeasi adresa se poate folosi si daca ulterior doriti sa reintrati in clasament, cu rugamintea de a nu folosi aceasta metoda ori de cate ori DFCC scade prea mult.

    Dupa fiecare etapa, DFCC creste sau scade in functie de comportarea posesorului la respectiva etapa. Daca un concurent nu trimite nici o sursa la o etapa, DFCC-ul sau va scadea cu 10 dexteri. Urmeaza o modelare matematica a legilor de variatie a DFCC.

    DFCC-ul in momentul inscrierii in clasament este de 1000. Fiecare problema propusa va avea un anumit "punctaj de baza" P pus in joc, de ordinul zecilor de dexteri (o problema medie 50 dexteri, una foarte grea 100 dexteri). Valoarea lui P se va anunta o data cu enuntul. Problema nu se puncteaza insa la fel pentru toti concurentii, deoarece este firesc ca daca un concurent slab face o problema sa castige mai mult decat un concurent bun care face aceeasi problema. Numarul maxim de dexteri pe care un concurent cu coeficientul DFCC egal cu D il poate castiga la o problema de P dexteri (daca trece toate testele) este:

    DMax = min (1000*P/D, 3*P)

    Cu alte cuvinte, un nou venit (D=1000) poate castiga 1000*P/1000 = P dexteri, in vreme ce un concurent mai slab (de exemplu D=500) poate castiga pentru aceeasi problema 1000*P/500=2*P dexteri. Minimizarea cu 3*P s-a facut pentru a nu lasa functia 1000*P/D sa creasca prea mult pentru valori mici ale lui D (de exemplu 100-200).

    Desigur, coeficientul DFCC poate sa si scada. Numarul maxim de dexteri pe care concurentul le poate pierde (in cazul in care nu trece nici un test) este:

    DMin = (D*P/3000)

    Adica, un jucator cu DFCC=1000 poate pierde 33% din P, un jucator cu DFCC=1500 poate pierde 50% din P etc. "The bigger they are, the harder they fall" :)

    Mai trebuie luata in calcul o singura variabila, si anume numarul de teste de la fiecare problema. Daca un concurent trece exact un anumit numar de teste, notat cu NTE, la o problema, DFCC-ul lui ramane constant. Daca el face mai mult de NTE teste, DFCC-ul va creste; daca face mai putine, DFCC-ul va scadea. NTE vine de la "numarul de teste pentru echilibru". Desigur, NTE creste o data cu DFCC-ul, adica de la un programator bun se cere sa treaca macar 75% din teste, pe cand la unul mediu 30% ajung. Numarul de teste cerut de la un concurent pentru ca DFCC-ul lui sa ramana constant este

    NTE = min( [3*D*T/10000], [90%*T])
    ([x] = parte intreaga din x)

    unde T este numarul total de teste date la problema. Ca sa putem da cateva exemple, particularizam pentru situatia incetatenita, T=10. De la un incepator (D=1000) se cer NTE=[3*1000*10/10000]=3 teste ca sa ramana pe loc, iar de la unul mai avansat (D=1700) se cer NTE=[3*1700*10/10000]=5 teste. Limitarea la 90% s-a facut pentru ca bietii programatori geniali sa nu ajunga obligati sa faca 100% din teste si sa ramana tot pe loc.

    Ultimul aspect de lamurit este ce se intampla intre 0 si NTE teste trecute, respectiv intre NTE si T teste trecute. Natural este sa se faca o distributie liniara. Exemplu: presupunem ca in urma calculelor de mai sus rezulta DMin=50 dexteri, DMax=72 dexteri si NTE=4 teste (din T=10 teste in total). Atunci rezulta, prin regula de trei simpla:


Teste trecute:     0   1   2   3 4  5  6  7  8  9 10 
Dexteri obtinuti:-50 -37 -25 -12 0 12 24 36 48 60 72 
  • Ca sa fie totul clar, iata un tabel orientativ cu mizele puse in joc pentru diferiti coeficienti DFCC, la o problema de P=100 dexteri pentru care se dau T=10 teste (numerele din coloanele DMax si DMin sunt reale; rotunjirile se fac la sfarsit de tot, dupa ce se ia in calcul si numarul de teste trecute).

    
    DFCC    NTE     DMax    DMin 
    0       0       300     0 
    500     1       200     16 
    1000    3       100     33 
    1500    4       66      50 
    2000    6       50      66 
    2500    7       40      83 
    3000    9       33      100 
    3500    9       28      116 
    4000    9       25      133 
    
    Cu alte cuvinte, la o problema de 100 dexteri, un concurent cu DFCC=2500 dexteri poate castiga maxim 40 de dexteri daca face tot, dar poate si pierde 83 dexteri daca nu face nimic. Daca problema are 10 teste, i se cere sa treaca 7 teste pentru a ramane la acelasi coeficient.

    Catalin Frâncu