Differences

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

Link to this comparison view

pa:test_practic [2018/05/10 10:57]
stefan.popa2209
pa:test_practic [2023/05/15 14:05] (current)
radu.nichita
Line 1: Line 1:
-==== Test Practic ​====+==== Teste Practice ​==== 
 + 
 +<note warning>​ 
 +Sustinerea testelor practice presupune acceptarea conditiilor mentionate pe aceasta pagina, precum si acordarea echipei de PA a permisiunii de a colecta date despre activitatea de pe calculatorul de pe care sunt sustinute testule (de ex. pagini accesate).  
 + 
 +</​note>​ 
 === Desfăşurare === === Desfăşurare ===
  
-Testul practic va avea loc sâmbătă, ​12 mai 2018, în săptămâna a 12-a de facultate, si va dura maxim 3 oreOrele vor fi anunțate în ptămâna testului. ​Pentru a susține testultrebuie ​să fiți prezențîn facultate.+Testul practic va avea loc **online** ​sâmbătă, ​14 mai 2022, în săptămâna a 10-a de facultate. ​ 
 + 
 +Activitatea dureaza 3h 10min (09:50 - 13:00) 
 +  
 +  * Prezența online pe MS Teams este necesară incepând cu 09:50. Până la ora 10:00 se vor rezolva diverse aspecte administrative. 
 +    * Trebuie ​să verificați că vă puteți loga pe 
 +        * HackerRank 
 +        * moodle 
 +        * teams  
 +    * Linkul pentru concurs va fi postat în dimineața concursului pe [[https://​curs.upb.ro/​2021/​mod/​forum/​view.php?​id=210367 | forumul dedicat ​testului ​practic]]. 
 +  * Proba propriu-zisă se va desfășura între orele 10:​00-13:​00. 
 + 
 +<note warning>​ 
 +Este necesar sa fiti conectati pe MS Teams in permanenta pe durata testului practic; in orice moment al desfășurării acestei probeorice membru al echipei de PA cere unui student sharescreen + video call sau să solicite alte verificări. Vă rugăm să aveți la îndemână șun act pentru identificare (carnet de student, carte de identitate, pașaport). 
 +</​note>​
  
 === Structură === === Structură ===
  
-Testul va conţine **2** probleme **uşoare**,​ **2** probleme **ușoare-medii** și **2** probleme **medii-grele**.+Testul ​practic ​va conţine **2** probleme **uşoare**,​ **2** probleme **ușoare-medii** și **2** probleme **medii-grele**.
 Va trebui să rezolvaţi la alegere câte o problemă din fiecare categorie. Va trebui să rezolvaţi la alegere câte o problemă din fiecare categorie.
  
-Problemele se vor baza pe materia studiată ​în cadrul cursului de PA:+Problemele se vor baza pe urmatoarele capitole studiate ​în cadrul cursului de PA:
  
-  * **Divide et impera** +  * **Divide et Impera (laborator 1)** 
-  * **Greedy** +  * **Greedy ​(laborator 2)** 
-  * **Programare ​dinamică** +  * **Programare ​Dinamică (laborator 3/4)** 
-  * **Backtracking** +  * **Backtracking ​(laborator 5)** 
-  * **Parcurgeri pe grafuri: DFS, BFSSortare topologică** +  * **Parcurgerea Grafurilor. Aplicatii (laborator 6/7)** 
-  * **Aplicatii ​DFS: detectare de punti, puncte de articulatie,​ componente tare conexe ​(fara componente biconexe)** +  * **Drumuri ​Minime (laborator 8/9)**
-  * **Drumuri ​minime**+
  
 === Materiale === === Materiale ===
  
-Testul este open-book. ​Cu alte cuvinte aveţi ​acces la internet / slide-uri / ocw / HackerRank.+Testul este open-book. ​Aveti acces la slide-urile de curs, laboratoare (ocw.cs.pub.ro/pa), internet. Puteti sa folositi cod pus la dispozitie de echipa de PA sau scris de voi inainte de testul practic, dar NU aveti voie sa preluati cod de pe internet.
  
-**NU** aveţi voie să folosiţi internetul ca mijloc de comunicare. **NU este acceptată preluarea de cod de pe internet care rezolvăchiar și parțialprobleme similare cu cele propuse**. Exemple de surse externe **neacceptate** pentru cod: internetcodul altor colegiExemple ​de surse externe **acceptate**:​ căutare de idei și algoritmipreluare de cod pentru folosirea API-ului din limbajul doritorice cod oferit de echipa de PA inainte de testul practic (pe ocw/​moodle),​ cod **scris de voi** in prealabil (la laborator, teme sau pentru ​pregatire suplimentara). Ne rezervăm dreptul de a penaliza orice nerespectare a acestor reguli.+NU aveţi voie să folosiţi internetul ca mijloc de comunicare, aceasta insemnand ca nu este permis sa puneti intrebari ​pe site-uri precum stackoverflow sau sa intrati pe HangoutsFacebook MessengerGoogle Docsmail etcOrice abatere ​de la aceasta regulaobservata in timpul testuluiva duce la anularea testului ​pentru ​persoana in cauza.
  
 +NU este acceptata preluarea de cod care rezolva, chiar si partial, probleme similare cu cele propuse.
 +
 +Exemple de surse externe neacceptabile pentru cod: internet, codul altor colegi. ​
 +
 +Exemple de surse externe acceptabile:​ cautarea de idei si algoritmi, preluare de cod pentru folosirea API-ului din limbajul dorit, cod propriu sau oferit de echipa de PA inainte de test.
 +
 +Ne rezervăm dreptul de a penaliza orice nerespectare a acestor reguli. Toate solutiile trimise vor fi testate impotriva copierii.
  
 === Evaluare / Notare === === Evaluare / Notare ===
Line 30: Line 56:
 Testul practic valorează **1.5 puncte** din nota finală. Testul practic valorează **1.5 puncte** din nota finală.
  
-Fiecare problemă va avea un punctaj între 0 ș50. Nota voastră pe test va fi calculată după formula: +Evaluarea şnotarea se vor face în mod automat folosind platforma [[https://www.hackerrank.com|HackerRank]].
-(Punctaj_problema_ușoară + Punctaj_problema_medie + Punctaj_problema_grea) ​100. Punctaj_problema_ușoară reprezintă maximul obținut pe cele două probleme ușoare (nu se cumulează punctajul celor două), Punctaj_problema_medie reprezintă maximul obținut pe cele două probleme medii, iar Punctaj_problema_grea reprezintă maximul obținut pe cele două probleme grelePunctajul maxim este de 1.5 puncte din media finală de la PA+
  
-Dacă nu aveţi cont pe [[https://​www.hackerrank.com|HackerRank]],​ vă sugerăm să vă înregistraţi până la data susținerii testului. De asemenea, din cauza restricției de 16 caractere pentru numele contului, acesta trebuie să aibă următorul format: primele 8 litere din numele de familie (doar prima literă cu majusculă),​ inițialele primelor 2 prenume cu majusculă, apoi grupa.+<note warning>​ 
 +Creati-va contul pe Hackerrank inainte de testul practic, nu veti vrea sa pierdeti timp atunci. Este obligatoriu sa va creati contul folosind emailul de la facultate (ex. gigel.popescu@stud.acs.upb.ro). In cazul in care aveti deja cont pe Hackerrank, il puteti folosi pe acela. In ambele cazuri totusi, va rugam sa va asigurati ca folositi adresa de UPB in campul "​University email" la inscrierea pentru test. 
 + 
 +Nerespectarea acestui reguli duce la anularea punctajului pe test intrucat copierea punctajelor in catalog se va face automat pe baza adresei voastre de email (aceeasi cu utilizatorul de Moodle). 
 + 
 +Dacă nu aveţi cont pe [[https://​www.hackerrank.com|HackerRank]],​ vă sugerăm să vă înregistraţi până la data susținerii testului. ​ 
 +</​note>​ 
 + 
 +Problemele au punctaj intre 0p si 50p si fiecare problema are un numar de teste X precizat in enunt. Astfel, fiecare test valoreaza 50 / X puncte (de ex. daca X = 10, fiecare test valoreaza 5p). Toate testele sunt private. 
 + 
 +Se vor puncta: o singura problema usoara, una medie si una grea. Punctajul pe fiecare tip de problema nu se aduna, ci va fi cel maxim pe acel tip (de ex: daca faceti ambele probleme usoare, una de 30p iar cealalta de 40p, punctajul pe problemele usoare va fi 40p). De asemenea, daca v-ati apucat de o problema usoara, de exemplu, si nu reusiti sa obtineti punctaj maxim pe aceasta, puteti incerca sa o rezolvati pe cealalta si veti obtine maximul punctajelor celor 2 probleme. 
 + 
 + 
 +De asemenea, din cauza restricției de 16 caractere pentru numele contului, acesta trebuie să aibă următorul format: primele 8 litere din numele de familie (doar prima literă cu majusculă),​ inițialele primelor 2 prenume cu majusculă, apoi grupa.
  
   - Exemplu: **Popescovici Ion Gheorghe Marian** din grupa **325CA** va avea contul pe HackerRank: **PopescovIG_325CA**   - Exemplu: **Popescovici Ion Gheorghe Marian** din grupa **325CA** va avea contul pe HackerRank: **PopescovIG_325CA**
Line 40: Line 78:
 Daca aveți deja cont pe HackerRank vă sfătuim să vă faceți **unul nou** care respectă constrângerile de nume cerute, altfel puteți să modificați numele public al contului existent. Daca aveți deja cont pe HackerRank vă sfătuim să vă faceți **unul nou** care respectă constrângerile de nume cerute, altfel puteți să modificați numele public al contului existent.
  
 +<​hidden>​
 Vi se va da acces la probleme doar dacă sunteți prezenți în laboratoare,​ accesul extern nefiind posibil. ​ Vi se va da acces la probleme doar dacă sunteți prezenți în laboratoare,​ accesul extern nefiind posibil. ​
 +</​hidden>​
 +
 +=== Test practic de recuperare ===
 +
 +<​hidden>​
 +In cazul in care, din motive serioase, nu puteti participa la testul practic principal (sambata, 14 mai), puteti alege sa sustineti un test practic de recuperare, in cursul saptamanii urmatoare (16-20 mai). Testul se desfasoara intre orele 08:50 - 12:00, iar formatul este identic cu cel al testului principal.
 +Inainte de a participa la testul de recuperare, este necesar sa anuntati acest lucru printr-un raspuns pe urmatorul thread: https://​curs.upb.ro/​2021/​mod/​forum/​discuss.php?​d=13668
 +</​hidden>​
  
 === Indicații === === Indicații ===
  
-Asigurați-vă ca ați rezolvat problema [[https://​www.hackerrank.com/​challenges/​simple-array-sum|Simple-array-sum]] în limbajul în care veți coda la test. Limbajele acceptate în cadrul testului sunt **C++** și **Java**.+Problemele pot fi rezolvate direct in browser, pe platforma HackerRankDe asemenea, puteti lucra in IDE-ul dorit si sa copiati codul scris in browser ​la finalizarea problemei pentru a o testa sau sa uploadati fisierul cu codul.
  
-Unele precizări utile legate ​de submisii ​se află [[https://​www.hackerrank.com/​faq/​how-to-submit-code|aici]],​ iar un exemplu de soluție acceptată ​pentru ​Hello World puteți găsi [[https://​www.hackerrank.com/​environment/​sample-problem|aici]].+Puteti da **Run** pentru a va verifica solutia voastra pe exemplu (un test mic). De asemenea exista optiunea ​de a testa pe un custom testcase dat de voi. Pentru testele rulate ​se va arata si output-ul pentru ​a va putea depana codul mai usorOutput-ul pe testele mari este trunchiat.
  
-Pentru citirea în Java, vă recomandăm să folosiți BufferedReader cu InputStreamReader. O clasă care face asta și pe care o puteți folosi în timpul testului practic găsiți [[http://​pastebin.com/​XGUjEyMN|aici]],​ folosită pentru a citi un vector de intregi de la  stdin. Clasa oferă o interfață similară cu Scanner, dar este cam de 2 ori mai rapidă decât Scanner. Nu este nevoie să o salvați pentru testul practic, o sa găsiți clasa în scheletul de pe HackerRank, aferent problemelor de la test.+In cazul in care un test pica, puteti face hover peste rezultat pentru a vedea cauza (wrong answer, time limit exceeded etc). 
 + 
 +In enunt se va preciza cate teste are problema curenta si cate puncte valoreaza fiecare test. La **Run All Tests** platforma va marca toate testele cu passed / failed (verde / rosu), astfel incat puteti vedea daca ati trecut toate testele la o problema. ​ Platforma **nu** afiseaza explicit punctajul acordat, dar il puteti deduce astfel: 
 +  * Daca toate testele sunt trecute (passed / verde), problema este rezolvata complet si daca este submisa se va acorda punctaj maxim.  
 +  * Daca doar o parte din teste sunt marcate ca passed, punctajul acordat in cazul submiterii este proportional cu numarul de teste trecute (ex. presupunem ca un test are 5p si o problema are 10 teste; 10 teste trecute - toate - inseamna 10 x 5 = 50p; 3 teste trecute inseamna 3 x 5 = 15p).  
 + 
 +<​note>​ 
 +Pentru acomodarea cu platforma HR, echipa de PA a creat un concurs de simulare, deschis permanent:​ 
 +www.hackerrank.com/​test-practic-practice-2022. Punctajul obtinut pe acest test nu influenteaza in niciun fel nota obtinuta la testul de pe 14 mai. 
 +De asemenea, vom publica si un scurt tutorial video care sa prezinte platforma HackerRank accesibil la [[https://​cutt.ly/​ACS-PA-demo02-HackerRank | ]]. 
 + 
 + 
 +De asemenea, puteti face submisii si in testul de anul trecut, cu acelasi scop (acomodarea cu platforma) - https://​hr.gs/​practice-pa-2020-unofficial. 
 +</​note>​ 
 + 
 +Pentru studentii care vor sa rezolve problemele in C++: 
 +  * Puteti folosi scanf si printf (din stdio) pentru citire/​afisare sau cin si cout (din iostream). 
 +  * Puteti rezolva o problema in C/C++ si alta in Java, este alegerea voastra. 
 +  * Aveti voie sa folositi orice doriti din STL si Java API.  
 + 
 + 
 +Pentru studentii care vor sa rezolve problemele in Java: am pus la dispozitie in starter code o clasa - MyScanner - pe care recomandam sa o folositi in locul clasei Scanner pentru citirea de la stdin. Aceasta este bazata pe BufferedReader,​ care este mai rapid. Daca folositi Scanner-ul clasic, veti lua TLE (time limit exceeded) la unele teste. Interfata utila pentru test a clasei Scanner apare si in interfata clasei MyScanner. ​Pentru citirea în Java, vă recomandăm să folosiți BufferedReader cu InputStreamReader. O clasă care face asta și pe care o puteți folosi în timpul testului practic găsiți [[http://​pastebin.com/​XGUjEyMN|aici]],​ folosită pentru a citi un vector de intregi de la  stdin. Clasa oferă o interfață similară cu Scanner, dar este de aproximativ ​2 ori mai rapidă decât Scanner. Nu este nevoie să o salvați pentru testul practic, o sa găsiți clasa în scheletul de pe HackerRank, aferent problemelor de la test
 + 
 +Limbajele puse la dispozitie pentru rezolvarea testului sunt C,  C++11 / C++14  si Java 7 / 8. 
 +Nu aveti schelet de cod pentru citire, cu exceptia clasei MyScanner pentru Java si a liniei din C++. 
 +Nu conteaza coding-style-ul (astfel ca puteti folosi variabile globale de exemplu). Nu e nevoie de comentarii in surse. Folositi timpul avut la dispozitie doar pentru rezolvarea problemelor. 
 + 
 +<note warning>​ 
 +Sursele vor fi verificate manual dupa test, astfel ca daca exista teste hardcodate (de exemplu cout << 0 sau System.out.println(0)),​ acestea vor fi anulate si chiar depunctate (depinde de caz). 
 +</​note>​ 
 + 
 +Unele precizări utile legate de submisii se află [[https://​www.hackerrank.com/​faq/​how-to-submit-code|aici]],​ iar un exemplu de soluție acceptată pentru Hello World puteți găsi [[https://​www.hackerrank.com/​environment/​sample-problem|aici]].
  
 Pentru pregătire vă sfătuim sa rezolvați cât mai multe probleme de infoarena, hackerrank, leetcode si alte platforme cu probleme de algoritmică. Pentru pregătire vă sfătuim sa rezolvați cât mai multe probleme de infoarena, hackerrank, leetcode si alte platforme cu probleme de algoritmică.
Line 59: Line 137:
  
 Link-uri teste practice anii anteriori: Link-uri teste practice anii anteriori:
 +  * [[http://​www.hackerrank.com/​test-practic-2022-06318/​challenges/​ | 2022 - varianta 1]]  ​
 +  * [[https://​www.hackerrank.com/​test-practic-recuperare-2022-90528/​challenges | 2022 - varianta 2]]
 +  * [[http://​hr.gs/​practice-pa-2020-unofficial | 2020 - varianta 1]] (daca link-ul nu mai merge, trimiteti e-mail catre neatudarius@gmail.com).
 +  * [[https://​www.hackerrank.com/​contests/​test-practic-pa-2019-64563/​challenges/​ | 2019 - varianta 1]]
 +  * [[https://​www.hackerrank.com/​contests/​test-practic-pa-2019-53266/​challenges/​ | 2019 - varianta 2]]
 +  * [[https://​www.hackerrank.com/​contests/​test-practic-pa-2018-v1-deadbeef/​challenges/​ | 2018 - varianta 1]]
 +  * [[https://​www.hackerrank.com/​contests/​test-practic-pa-2018-v2-cafebabe-101/​challenges/​ | 2018 - varianta 2]]
   * [[https://​www.hackerrank.com/​contests/​test-practic-pa-2017-v1-plumbus | 2017 - varianta 1]]   * [[https://​www.hackerrank.com/​contests/​test-practic-pa-2017-v1-plumbus | 2017 - varianta 1]]
   * [[https://​www.hackerrank.com/​test-practic-pa-2017-v2-meeseeks | 2017 - varianta 2]]   * [[https://​www.hackerrank.com/​test-practic-pa-2017-v2-meeseeks | 2017 - varianta 2]]
pa/test_practic.txt · Last modified: 2023/05/15 14:05 by radu.nichita
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