Differences

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

Link to this comparison view

pa:test_practic [2021/04/23 10:48]
mihai.grigore0711
pa:test_practic [2025/05/05 15:16] (current)
radu.nichita
Line 1: Line 1:
 ==== Teste Practice ==== ==== Teste Practice ====
  
-<note warning>​ +=== Informații test practic 2025 ===
-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>+Echipa de Proiectarea Algoritmilor își rezervă dreptul de a modifica următoarele reguli. Actualizările vor fi anunțate pe https://​curs.upb.ro/​ sau pe Microsoft Teams.
  
-=== Desfăşurare ​===+=== Reguli generale de organizare ​===
  
-Primul ​test practic va avea loc sâmbătă24 aprilie 2021în săptămâna a 8-a de facultate+1. Studentul care participă la un test practic va include numeleprenumele și grupa sasub forma unui comentariu, la începutul fiecărui fișier sursă care este trimis spre evaluare. 
 +Exemplu: 
 +<code c> 
 +// NEAȚU Darius-Florentin, 3XXCA 
 +#include <​iostream>​ 
 +... 
 +</​code>​
  
-Activitatea dureaza 3h 10min (09:50 - 13:00) +2. Prin acceptarea începerii testului practic, studentul declară ​pe propria răspundere că el singur și numai el rezolvă problemele din cadrul testului, fără să fie ajutat. De asemenea, declară pe proprie răspundere ​că nu comunică cu alte persoane ​în timpul testului cu privire la soluțiile problemelor din cadrul ​testului. ​De asemenea, studentul declară pe propria răspundere că nu trimite / nu primește codul sursă al soluției unei probleme sau părți din codul sursă altui student / de la alt student.
-  +
-  * 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/​mod/​forum/​view.php?​id=244635 | forumul dedicat ​testului ​practic]]. +
-  * Proba propriu-zisă se va desfășura între orele 10:00-13:00.+
  
-<note warning>​ +3. Studentul acceptă și recunoaște că nu se inspiră șnu folosește cod sursă inspirat din resurse electronice disponibile pe Internetdin materiale scrise sau alte forme de materiale
-Este necesar sa fiti conectati pe MS Teams in permanenta pe durata testului practic; in orice moment al desfășurării acestei probe, orice membru al echipei de PA cere unui student sharescreen + video call sau să solicite alte verificări. Vă rugăm să avețla îndemână și un act pentru identificare (carnet de studentcarte de identitate, pașaport). +
-</​note>​+
  
-=== Structură ===+4. În cazul unor suspiciuni cu privire la soluțiile trimise spre evaluare de către un student, acesta acceptă anularea punctajului obținut automat în platformă și re-examinarea studentului de către titularul de curs.
  
-Primul test practic va conţine **2** probleme **uşoare**,​ **2** probleme **ușoare-medii** și **2** probleme **medii-grele**. +6Participanții se obligă ​să nu distribuie ulterior testului enunțurile problemelor sau soluțiile propuse de el în nicio formă (electronică sau scrisă) fără acordul prealabil al titularului de curs.
-Va trebui ​să rezolvaţi la alegere câte o problemă din fiecare categorie.+
  
-Problemele se vor baza pe urmatoarele capitole studiată în cadrul cursului ​de PA:+7. Studentul acceptă punerea sa în discuția Comisiei ​de etică a Facultății de Automatică și Calculatoare în cazul abaterii de la regulamentul menționat anterior și va accepta deciziile acesteia.
  
-  * **Divide et impera** +8. Testul trebuie să reprezinte exclusiv munca/​soluția studentului! Echipa va aplica regulamentele în vigoare pentru ​ sițuațiile de fraudă/​plagiat,​ pentru orice nerespectare a acestei reguli, incluzând, dar nelimitându-se la: copierea de la colegi (se aplică pentru ambele persoane implicate) sau din alte surse a unor părți din test, prezentarea ca rezultat personal a oricărei bucăți de cod provenită din alte surse necitate sau neaprobate în prealabil (site-uri web, alte persoane, cod generat folosit AI/LLM-uri etc.). ​
-  * **Greedy** +
-  * **Programare dinamică**+
  
-=== Materiale ​===+=== Reguli de evaluare și notare ​=== 
  
-Testul este open-bookAveti acces la slide-urile de curslaboratoare (ocw.cs.pub.ro/​pa)internet. Puteti sa folositi cod pus la dispozitie de echipa de PA sau scris de voi inainte de testul practicdar NU aveti voie sa preluati cod de pe internet.+1Toate problemele presupun implementarea ​ unui program complet (citirerezolvare, afișare, funcție main)Limbaje permise: CC++Java.
  
-NU aveţi voie să folosiţinternetul ca mijloc de comunicare, aceasta insemnand ca nu este permis sa puneti intrebari pe siteuri precum stackoverflow sau sa intrati pe Hangouts, Facebook Messenger, Google Docs, mail etc. Orice abatere de la aceasta regula, observata in timpul testului, va duce la anularea testului pentru persoana in cauza.+2. O sursă care reprezintă soluția unei probleme din cadrul testului practic șcare nu compilează nu se punctează.
  
-NU este acceptata preluarea de cod care rezolvachiar si partial, probleme similare ​cu cele propuse.+3. O sursă ​care compileazăse va puncta ​cu valoarea punctelor pe care soluția respectivă le obține pe teste (punctele sunt acordate automat de evaluator).
  
-Exemple de surse externe neacceptabile pentru cod: internet, codul altor colegi+4. Se poate anula ulterior punctajul pe o problemă în caz că rezolvarea nu respectă restricțiile impuse în enunț sau în regulament.
  
-Exemple de surse externe acceptabile:​ cautarea de idei si algoritmipreluare ​de cod pentru folosirea API-ului ​din limbajul dorit, cod propriu sau oferit ​de echipa de PA inainte de test.+5. Pentru nota 10 pe un test practiceste necesară obținerea a 200 de puncte ​din cele 200 maxim posibile. Nu se acordă punctaj bonus. O problemă este punctată cu maximum 100 de puncte.
  
-Ne rezervăm dreptul ​de a penaliza orice nerespectare a acestor reguli. Toate solutiile trimise vor fi testate impotriva copierii.+6. Orice tentativă de fraudă va aduce un punctaj nul pe parcurs la materia Proiectarea Algoritmilor.
  
-=== Evaluare / Notare ​===+=== Desfășurare test === 
  
-Primul ​test practic ​valorează **1.25 puncte** din nota finală.+Un test practic ​se va desfășura pe platforma Hackerrank Business la o adresă menționată. Link-ul va fi disponibil cu câteva minute înainte de începerea testului
  
-Evaluarea şnotarea se vor face în mod automat folosind platforma [[https://www.hackerrank.com|HackerRank]].+Trebuie să vă logațpe platformă cu următoarele date: 
 +    * e-mail UPB (exdarius.neatu@upb.ro) 
 +    * nume complet (ca în catalog) 
 +    * grupă (ex. 3XXCA) 
 +    * parola privată și personală primită de la echipa de PA pentru testul practic pe platforma de curs (curs.upb.ro - vom anunța pe Microsoft Teams / Moodle când vor fi trimise parolele)
  
-<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).+**ATENTIE** Platforma **NU** ​va verifica ​automat ​informațiile ​de mai sus; este responsabilitatea voastră să verificați atent că datele introduse sunt corecte înainte ​de a începe testul. Nerespectarea datelor de logare pe platformă va atrage un punctaj nul pe testul practic.
  
-Dacă nu aveţi cont pe [[https://​www.hackerrank.com|HackerRank]],​ vă sugerăm să vă înregistraţpână la data susținerii testului +Testul practic va conține două probleme - o problemă ușoară șo problemă medieProblemele se vor baza pe urmatoarele capitole studiate în cadrul cursului de PA:
-</​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.+    * Divide et Impera (laborator 1) 
 +    * Greedy (laborator 2) 
 +    * Programare Dinamică (laborator 3/4) 
 +    * Backtracking ​(laborator 5) 
 +    * Parcurgerea GrafurilorAplicatii (laborator 6/7)
  
-Se vor puncta: o singura problema usoara, una medie si una greaPunctajul pe fiecare tip de problema nu se adunaci va fi cel maxim pe acel tip (de exdaca 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.+Se poate obține punctaj parțial la orice problemăFiecare problemă are 12 testenumerotate ​de la 0 la 11: 
 +    * Testele 0-1: Sunt exemple publice și valorează 0p. 
 +    * Testele 2-11: Sunt teste private și valorează 10 x 10p = 100p.
  
 +Testul practic va avea în intervalul de laborator al fiecărei semigrupe, în săptămâna 05-09 mai 2025.
  
-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** +**ATENTIE** Rezolvarea se face exclusiv in browserul Google Chrome, folosind o singură fereastră. După startul testului, este interzisă părăsirea/​minimizarea tabului sau a ferestrei în care s-a pornit testul. Este interzisă scrierea codului în alte aplicații/​ferestre. Platforma va monitoriza orice ieșire ​din tab-ul de HR, precum și fiecare caracter introdus în editorul de cod. Tot codul introdus trebuie să aparțină studentului evaluat, fără a folosi surse de inspirație sau ajutor. Testul practic valorează 1.5 puncte ​din nota finală.
-  ​Exemplu: **Vasile Marian** ​din grupa **321CA** va avea contul pe HackerRank: **VasileM_321CA**+
  
-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țsă modificați numele public al contului existent.+**ATENȚIE**:​ Testul durează 1h 40 min. Pentru a asigura tuturor semigrupelor acces facil in sală, ​vă rugăsă vă prezentați in față lii cu cel puțin 5 minute înainte de ora de start a laboratorului (7:55, 9:55, 11:55, etc). Accesul in sală este permis cel târziu până la ș5 minute.
  
-<​hidden>​ 
-Vi se va da acces la probleme doar dacă sunteți prezenți în laboratoare,​ accesul extern nefiind posibil. ​ 
-</​hidden>​ 
- 
-=== Test practic de recuperare === 
- 
-In cazul in care, din motive serioase, nu puteti participa la primul test practic principal (sambata 24 aprilie), puteti alege sa sustineti un test practic de recuperare, cu o zi inaintea celui principal (vineri, 23 aprilie). 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/​mod/​forum/​discuss.php?​d=68485 
- 
-=== Indicații === 
- 
-Problemele pot fi rezolvate direct in browser, pe platforma HackerRank. De 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. 
- 
-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 outputul pentru a va putea depana codul mai usor. Outputul pe testele mari este trunchiat. 
- 
-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: 
-https://​hr.gs/​practice-pa-2021-1. Punctajul obtinut pe acest test nu influenteaza in niciun fel nota obtinuta la testul de pe 17 aprilie. 
-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++: 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 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. 
-  ​* Aveti voie sa folositi orice doriti din STL si Java API+
  
 +Pentru studentii care vor sa rezolve problemele in Java: 
 +  * Vom pune la dispoziție o clasă 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. ​
 +  * Aveți voie să folosiți orice doriți din 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 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. 
  
-Limbajele puse la dispozitie pentru rezolvarea testului sunt C,  C++11 / C++14  si Java 7/ 8. +Limbajele puse la dispozitie pentru rezolvarea testului sunt C,  C++17 și Java 17.
-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>​ +    * Nu aveti schelet ​de cod pentru citirecu exceptia clasei MyScanner pentru Java.
-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]].+    * 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.
  
-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ă.
  
-Asigurați-vă ca știți să folosiți structuri de date uzuale puse la dispoziție de limbajul în care veți coda, cum ar fi map, set, lista, etc.+    * Asigurați-vă ca știți să folosiți structuri de date uzuale puse la dispoziție de limbajul în care veți coda, cum ar fi map, set, list, etc.
  
 De asemenea vă recomandăm laboratoarele și paginile de pe wiki: De asemenea vă recomandăm laboratoarele și paginile de pe wiki:
Line 132: Line 98:
  
 Link-uri teste practice anii anteriori: Link-uri teste practice anii anteriori:
-  * [[http://hr.gs/practice-pa-2020-unofficial ​2020 - varianta 1]] (daca link-ul nu mai merge, trimiteti e-mail catre neatudarius@gmail.com).+  * [[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]]
   * [[https://​www.hackerrank.com/​contests/​test-practic-pa-2019-64563/​challenges/​ | 2019 - varianta 1]]   * [[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-2019-53266/​challenges/​ | 2019 - varianta 2]]
pa/test_practic.1619164084.txt.gz · Last modified: 2021/04/23 10:48 by mihai.grigore0711
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