This shows you the differences between two versions of the page.
|
sd-ca:tem123a2 [2017/03/12 22:31] emil.racec [Exemplu de functionare] |
sd-ca:tem123a2 [2017/03/22 11:01] (current) emil.racec [Punctaj TODO] |
||
|---|---|---|---|
| Line 14: | Line 14: | ||
| * isi imbunatateasca abilitatile in utilizarea limbajului C++ | * isi imbunatateasca abilitatile in utilizarea limbajului C++ | ||
| * sa imparta o problema complexa in sub-componente pe care sa le rezolve individula | * sa imparta o problema complexa in sub-componente pe care sa le rezolve individula | ||
| + | * sa utilizeze structura de date hashtable pentru maparea obiectelor jucator cu numele jucatorilor | ||
| + | * sa sorteze o colectie de date dupa criterii multiple (valoare si respectiv alfabetic) | ||
| * sa contruiasca si sa utilizeze grafuri pentru o implementare eficienta a problemei | * sa contruiasca si sa utilizeze grafuri pentru o implementare eficienta a problemei | ||
| * sa elaboreze o rezolvare complexa, la o cerinta inspirata din realitate | * sa elaboreze o rezolvare complexa, la o cerinta inspirata din realitate | ||
| Line 94: | Line 96: | ||
| ====Winning chance==== | ====Winning chance==== | ||
| - | Calcularea probabilitatii de a castiga o repriza este necesara in conditiile in care aceasta nu se poate termina, ca urmare a expirari timpului alocat campionatului sau o defectiune majora a sistemului. Formula are la baza statisticile acumulate despre jucatori si starea jocului curent (i.e. jucatorii ramasi in viata la acel moment): | + | Calcularea probabilitatii de a castiga ultima repriza este necesara in conditiile in care aceasta nu se poate termina, ca urmare a expirari timpului alocat campionatului sau o defectiune majora a sistemului. Formula are la baza statisticile acumulate despre jucatori si starea jocului curent (i.e. jucatorii ramasi in viata la acel moment): |
| ''winning_chance = sum(alive[i] * (best_shooter[i]/max(best_shooter) + (top_explorer[i] / max(top_explorer)))), i=0:n-1'' | ''winning_chance = sum(alive[i] * (best_shooter[i]/max(best_shooter) + (top_explorer[i] / max(top_explorer)))), i=0:n-1'' | ||
| unde: | unde: | ||
| - | * ''alive[i]'': ''1'' – daca jucatorul este in viata la incheierea reprizei, ''0'' – altfel | + | * ''alive[i]'': ''1'' – daca jucatorul este in viata la incheierea ultimei reprize, ''0'' – altfel |
| * ''best_shooter[i]'': scorul general best_shooter al jucatorului ''i'' | * ''best_shooter[i]'': scorul general best_shooter al jucatorului ''i'' | ||
| * ''top_explorer[i]'': scorul general top_explorer al jucatorului ''i'' | * ''top_explorer[i]'': scorul general top_explorer al jucatorului ''i'' | ||
| - | Echipa cu valoarea ''winning_chance'' mai mare va fi declarata echipa castigatoare. | + | Echipa cu valoarea ''winning_chance'' mai mare va fi declarata echipa castigatoare a ultimei reprize. |
| Line 213: | Line 215: | ||
| * unul pentru simularea miscarii luptatorilor in teren si calcularea statisticilor aferente | * unul pentru simularea miscarii luptatorilor in teren si calcularea statisticilor aferente | ||
| * si unul pentru simularea schimbului de focuri si calcularea statisticilor aferente | * si unul pentru simularea schimbului de focuri si calcularea statisticilor aferente | ||
| - | ===== Teste publice ===== | ||
| - | [[http://ocw.cs.pub.ro/courses/_media/sd-ca/teme/sd2015_tema3_checker_v2.zip_TODO|TODOChecker]] | ||
| + | Se recomanda utilizarea unui hashtable pentru maparea directa a numelor jucatorilor cu obiectele corespunzatoare (sau cu indexul acestora). | ||
| + | ===== Checker + teste publice ===== | ||
| + | |||
| + | <hidden> | ||
| + | Puteți descărca checker-ul, cu testele publice aferente, de aici: {{:sd-ca:teme:2017_tema2_lasertag_checker_v1.3.zip|Checker}} | ||
| + | </hidden> | ||
| ===== Reguli pentru trimitere ===== | ===== Reguli pentru trimitere ===== | ||
| Line 226: | Line 232: | ||
| * fisier **README** care să conțină detalii despre implementarea temei | * fisier **README** care să conțină detalii despre implementarea temei | ||
| - | ===== Punctaj TODO ===== | + | ===== Punctaj ===== |
| + | |||
| + | * 80 puncte obținute pe testele de pe vmchecker. Condiții pentru obținerea punctajului total: | ||
| + | * fără memleak-uri | ||
| + | * fără erori de valgrind | ||
| + | * 20 puncte: README | ||
| + | * **Bonus 20% din punctajul obținut** pentru coding style | ||
| + | * spre exemplu: cu 60p din 100p și coding style perfect, obțineți 60*1.2 = 72p | ||
| + | |||
| + | <note warning>**Nu copiați!** Toate soluțiile vor fi verificate folosind o unealtă de detectare a plagiatului. În cazul detectării unui astfel de caz, atât plagiatorul cât și autorul original (nu contează cine care e) vor primi punctaj 0 pe **toate temele**! | ||
| - | * 90 puncte obținute pe testele de pe vmchecker | + | De aceea, vă sfătuim să nu vă lăsați rezolvări ale temelor pe calculatoare partajate (la laborator etc), pe mail/liste de discuții/grupuri etc.</note> |
| - | * 10 puncte: README + alte eventuale penalizări | + | |
| - | * **Bonus 10 puncte** pentru soluțiile ce nu au memory leak-uri. | + | |
| - | * TOTAL: 100 puncte (+10 bonus) | + | |
| ===== FAQ TODO ===== | ===== FAQ TODO ===== | ||
| - | **Q:** Se poate folosi STL? | + | **Q:** Se poate folosi ? |
| - | **A:** Se poate folosi clasa string din STL. Folosirea oricărei alte clase din STL **nu este permisă** | + | **A:** Se poate folosi clasa |