Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sd-ca:tem123a2 [2017/03/12 22:14]
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 58: Line 60:
    * **senzorii de pozitie**: Sunt ''​n''​ senzori de pozitie, numerotati de la ''​0''​ la ''​n-1''​. Acestia sunt specificati printr-o pozitie relativa fata de ceilalti senzori. Astfel, fisierul de intrare va contine o linie cu un numar ''​n'',​ reprezentand numarul de senzori, urmat de ''​n''​ linii a cate ''​n-1''​ valori reprezentand distantele fata de ceilalti senzori. De exemplu: pe linia ''​i''​ sunt precizate ''​n-1''​ distante ale senzorului ''​i''​ fata de toti vecinii lui, in ordine crescatoare.    * **senzorii de pozitie**: Sunt ''​n''​ senzori de pozitie, numerotati de la ''​0''​ la ''​n-1''​. Acestia sunt specificati printr-o pozitie relativa fata de ceilalti senzori. Astfel, fisierul de intrare va contine o linie cu un numar ''​n'',​ reprezentand numarul de senzori, urmat de ''​n''​ linii a cate ''​n-1''​ valori reprezentand distantele fata de ceilalti senzori. De exemplu: pe linia ''​i''​ sunt precizate ''​n-1''​ distante ale senzorului ''​i''​ fata de toti vecinii lui, in ordine crescatoare.
    * **numele jucatorilor**:​ Se dau doua liste de nume, aferente jucatorilor celor doua echipe, astfel: pe prima linie doua numere naturale, nevide: ''​n''​ si ''​m''​ reprezantand numarul de jucatori, urmate de doua linii continand ''​n''​respectiv ''​m''​ nume, sperate prin spatiu.    * **numele jucatorilor**:​ Se dau doua liste de nume, aferente jucatorilor celor doua echipe, astfel: pe prima linie doua numere naturale, nevide: ''​n''​ si ''​m''​ reprezantand numarul de jucatori, urmate de doua linii continand ''​n''​respectiv ''​m''​ nume, sperate prin spatiu.
 +
 +**Obs:** Numele jucatorilor sunt compuse numai din caractere alfabetice (deci nu vor contine numere sau spatii).
  
 Vom detalia in continuare formulele de calcul pentru fiecare dintre acestea. Vom detalia in continuare formulele de calcul pentru fiecare dintre acestea.
Line 92: Line 96:
  
 ====Winning chance==== ====Winning chance====
-Calcularea probabilitatii de a castiga ​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 204: Line 208:
 1 - 2 1 - 2
 </​code>​ </​code>​
 +
 +**Obs:** Valorile ''​winning_chance'',​ truncheate la 3 zecimale, pentru exemplul dat  sunt: ''​2.186''​ si respectiv ''​2.897''​
  
 ===== Indicii de implementare ===== ===== Indicii de implementare =====
Line 209: 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 222: 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 
  
  
sd-ca/tem123a2.1489349640.txt.gz · Last modified: 2017/03/12 22:14 by emil.racec
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0