Differences

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

Link to this comparison view

programare:teme_2018:tema2_2018_ca [2018/11/05 04:21]
darius.neatu [Obiective]
programare:teme_2018:tema2_2018_ca [2018/11/18 14:56] (current)
darius.neatu
Line 4: Line 4:
   * [[darius.neatu@cti.pub.ro|Darius Neațu]]   * [[darius.neatu@cti.pub.ro|Darius Neațu]]
  
-**Deadline:​** **23.11.2018 23:55**+**Deadline:​** **26.11.2018 23:55**
  
  
  
 ======Actualizări====== ======Actualizări======
 +   * **06.11.2018 23:35** - Actualizare arhivă [[https://​ocw.cs.pub.ro/​courses/​_media/​programare/​teme_2018/​check_gigel.zip|check_gigel.zip]]. Vă rugăm să descarcați din nou arhiva. În unele fișiere caracterul apostrof('​) era înlocuit cu altceva. 
 +   * **06.11.2018 22:33** - Adăugare precizări suplimentare la task 2 despre modul de câștigare a macroboard-ului.
    * **06.11.2018 00:00** - **NU** există actualizări.    * **06.11.2018 00:00** - **NU** există actualizări.
        
Line 61: Line 62:
  
  
-Exemplu - n = 3, m = 8. Dacă șirul de mutări este următorul, atunci se obține board-ul din figura alăturată.+Exemplu - n = 3, m = 9. Dacă șirul de mutări este următorul, atunci se obține board-ul din figura alăturată.
 {{ :​programare:​teme_2018:​poza2_tabla_joc.png|}} {{ :​programare:​teme_2018:​poza2_tabla_joc.png|}}
  
Line 155: Line 156:
  
  
-După cum am spus anterior, în fiecare miniboard se va desfășura un joc de X și 0 de dimensiune n x n. Într-un miniboard câștigă jucătorul care are **o linie**, **o coloană** sau **o diagonală** (cea principală sau cea secundară),​ plină cu X (pentru jucătorul cu X) sau cu 0 (pentru jucătorul cu 0). +După cum am spus anterior, în fiecare miniboard se va desfășura un joc de X și 0 de dimensiune n x n. Într-un miniboard câștigă jucătorul care are cel puțin ​**o linie**, **o coloană** sau **o diagonală** (cea principală sau cea secundară),​ plină cu X (pentru jucătorul cu X) sau cu 0 (pentru jucătorul cu 0).  
 + 
 +<note warning>​ 
 +Menționăm că un miniboard este câștigat de **primul** jucător care face o linie, o coloană sau o diagonală în acest miniboard. Se poate pune în continuare mutări într-un miniboard câștigat, dar acesta rămâne în continuare a celui care l-a câștigat inițial. 
 +</​note>​
  
  
Line 162: Line 167:
 În caz de remiză într-un miniboard, în macroboard se va pune caracterul **-** (liniuță). Considerăm remiză orice caz în care **nu** există **un** câștigător. În caz de remiză într-un miniboard, în macroboard se va pune caracterul **-** (liniuță). Considerăm remiză orice caz în care **nu** există **un** câștigător.
  
-După completarea macroboard-ului,​ care are tot dimensiune $n$ x $n$, aplicăm ​aceeași ​regulă ​de mai sus: jocul este câștigat de jucătorul care are o linie, o coloană sau o diagonală (cea principală sau secundară) plină cu caracterul său în macroboard.+După completarea macroboard-ului,​ care are tot dimensiune $n$ x $n$, aplicăm ​următoarea ​regulă: jocul este câștigat de jucătorul care are cel puțin ​o linie, o coloană sau o diagonală (cea principală sau secundară) plină cu caracterul său în macroboard ​la **finalul jocului**.
  
- +<​note ​warning
-<​note>​ +Menționăm că jocul/​macroboard-ul **poate** fi câștigat de **un singur** ​jucător. ​ ​Acesta se stabilește la **finalul** execuției celor m mutări!
-Menționăm că un miniboard este câștigat de primul ​jucător ​care face o linie, o coloană sau o diagonală în acest miniboardSe poate pune în continuare ​mutări ​într-un miniboard câștigat, dar acesta rămâne în continuare a celui care l-a câștigat inițial.+
 </​note>​ </​note>​
 +
  
 Pentru a rezolva task 2 se cer următoarele:​ Pentru a rezolva task 2 se cer următoarele:​
   * 1. Să se afișeze **configurația finală a macroboard-ului** după executarea celor m mutări de la task 1.   * 1. Să se afișeze **configurația finală a macroboard-ului** după executarea celor m mutări de la task 1.
-  * 2. Să se determine **cine a câștigat** și să se afișeze pe ecran unul dintre mesajele+  * 2. Să se determine **cine a câștigat** și să se afișeze pe ecran **unul** dintre mesajele
        * “X won”        * “X won”
        * “0 won”        * “0 won”
-       * “Draw again! Lets play darts!”+       * “Draw again! Let's play darts!”
  
 <spoiler 00-example.in (Tasks 1 + 2)> <spoiler 00-example.in (Tasks 1 + 2)>
Line 194: Line 199:
 NOT AN EMPTY CELL NOT AN EMPTY CELL
 X0- X0-
---- +------ 
---- +Draw again! Let's play darts!
-Draw again! Lets play darts!+
 </​code>​ \\ \\ | </​code>​ \\ \\ |
  
Line 274: Line 278:
 NOT AN EMPTY CELL NOT AN EMPTY CELL
 X0- X0-
---- +------ 
---- +Draw again! Let's play darts!
-Draw again! Lets play darts!+
 X 0.2500000000 X 0.2500000000
 0 0.3333333333 0 0.3333333333
Line 369: Line 372:
  
 <note warning> <note warning>
-Toate aceste exemple se găsesc în arhiva de testare  ​[[https://​ocw.cs.pub.ro/​courses/​_media/​programare/​teme2018/​check_gigel.zip|check_gigel.zip]].+Toate aceste exemple se găsesc în arhiva de testare ​ check_gigel.zip.
  
 Pentru fiecare exemplu se găsesc: Pentru fiecare exemplu se găsesc:
Line 397: Line 400:
 NOT AN EMPTY CELL NOT AN EMPTY CELL
 X0- X0-
---- +------ 
---- +Draw again! Let's play darts!
-Draw again! Lets play darts!+
 X 0.2500000000 X 0.2500000000
 0 0.3333333333 0 0.3333333333
Line 462: Line 464:
 ---- ----
 ---- ----
----- +--- 
-Draw again! Lets play darts!+Draw again! Let's play darts!
 X 0.2500000000 X 0.2500000000
 0 0.0000000000 0 0.0000000000
Line 514: Line 516:
 ====== Testare ====== ====== Testare ======
  
-Testarea temei se va face folosind un script de evaluare automată, ce poate fi descărcat de [[https://​ocw.cs.pub.ro/​courses/​_media/​programare/​project-allocator.zip|aici]].+Testarea temei se va face folosind un script de evaluare automată, ce poate fi găsit în [[https://​ocw.cs.pub.ro/​courses/​_media/​programare/​teme_2018/​check_gigel.zip|check_gigel.zip]].
  
 <note warning> ​ <note warning> ​
Line 546: Line 548:
    
 </​note>​ </​note>​
 +
 +  * Arhiva mai conține un script numit ''​cs.py'',​ prezentat în pagina de Coding Style de pe ocw.
  
   * Dacă apar erori şi testarea eşuează, puteţi să vă uitaţi în directorul ''​tests''​ şi să comparaţi rezultatele voastre (fişierele ''​tests/​out/​*.out''​),​ cu cele ale implementării de referinţă (fişierele ''​tests/​ref/​*.ref''​).   * Dacă apar erori şi testarea eşuează, puteţi să vă uitaţi în directorul ''​tests''​ şi să comparaţi rezultatele voastre (fişierele ''​tests/​out/​*.out''​),​ cu cele ale implementării de referinţă (fişierele ''​tests/​ref/​*.ref''​).
 ea să-l rulaţi separat şi să experimentaţi cu el şi alte situaţii. ea să-l rulaţi separat şi să experimentaţi cu el şi alte situaţii.
  
-  * Arhiva mai conține un script numit ''​cs.py'',​ prezentat în pagina ​de Coding Style de pe ocw.+<spoiler Testare manuală>​ 
 +<​note>​ 
 +Dacă doriți să testați manual folosind redirectări (fără a introduce ​de fiecare dată datele ​de la tastatură),​ puteți folosi această metodă.
  
 +<code bash>
 +darius@pc ~ $ make build # imi va creea executabilul gigel
 +
 +darius@pc ~ $ ./gigel < tests/​in/​00-gigel.in # voi rula pe gigel cu inputul din fisierul tests/​in/​00-gigel.in
 +                                             # rezultatul se va afisa pe ecran
 +
 +darius@pc ~ $ ./gigel < tests/​in/​00-gigel.in > out # voi rula pe gigel cu inputul din fisierul tests/​in/​00-gigel.in
 +                                                   # rezultatul va fi salvat in fisierul out (pe care pot da cat sau il pot deschide in Sublie)
 +                                                   
 +darius@pc ~ $ diff tests/​ref/​00-gigel.ref out # diff compara linie cu linie cele 2 fisiere
 +                                              # daca nu afiseaza ceva (erori) atunci sunt indentice
 +                                              # altfel arata cum este linia in primul fisier si cum arata in al 2lea  ​
 +                                              # DACA fisierele au linii mici, se pot compara in paralel (pe coloane), folosind parametrul -y.            ​
 +</​code>​
 +
 +Un exemplu de comparare se află in poza următoare.
 +
 +{{programare:​teme_2018:​tema2_diff.png?​800}}
 +</​note>​
 +</​spoiler>​
 ===== Barem corectare ===== ===== Barem corectare =====
   * Criteriile de notare sunt următoarele:​   * Criteriile de notare sunt următoarele:​
Line 585: Line 611:
   * Tema se va implementa DOAR în limbajul **C**. Va fi compilat și testat DOAR într-un mediu **LINUX**. Nerespectarea acestor reguli aduce un punctaj NUL.   * Tema se va implementa DOAR în limbajul **C**. Va fi compilat și testat DOAR într-un mediu **LINUX**. Nerespectarea acestor reguli aduce un punctaj NUL.
  
-  * Tema va fi trimisă DOAR pe [[https://​elf.cs.pub.ro/​vmchecker/​|vmchecker]],​ sub forma unei arhive ​**ZIP**. Nerespectarea acestei reguli aduce un punctaj NUL pe temă.+  * Temele vor fi trimise OBLIGATORIU ​pe vmchecker **ȘI** pe site-ul de curs (moodle), in sectiunea dedicata temei respective.
  
   * Fișierele temei trebuie OBLIGATORIU împachetate într-o arhiva de tip '​.zip',​ cu numele **Grupa_NumePrenume_Tema2.zip** (exemplu: **369CA_PopescuGigel_Tema2.zip**).   * Fișierele temei trebuie OBLIGATORIU împachetate într-o arhiva de tip '​.zip',​ cu numele **Grupa_NumePrenume_Tema2.zip** (exemplu: **369CA_PopescuGigel_Tema2.zip**).
programare/teme_2018/tema2_2018_ca.1541384462.txt.gz · Last modified: 2018/11/05 04:21 by darius.neatu
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