Differences

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

Link to this comparison view

programare:tema1_cbcd_2015_2016 [2015/10/26 00:25]
cosmin.boaca
programare:tema1_cbcd_2015_2016 [2015/10/26 17:50] (current)
cosmin.boaca [Trimitere temă]
Line 32: Line 32:
 == Input == == Input ==
  
-Pe prima linie a fișierului de intrare ​se va regăsi numărul K.+Pe prima linie se va regăsi numărul K.
  
  K  K
Line 38: Line 38:
 == Output: == == Output: ==
  
-Pe prima linie din fișierul de ieșire ​se va găsi **numărul N de perechi** de forma (a, b) care resepctă proprietatea descrisă mai sus+Pe prima linie se va găsi **numărul N de perechi** de forma (a, b) care resepctă proprietatea descrisă mai sus
 Pe următoarele N linii se vor regăsi perechile **(ai, bi), ai < bi** sortate în ordinea crescătoare a numărului **ai**, iar în caz de egalitate în ordinea crescătoare a numărului **bi** Pe următoarele N linii se vor regăsi perechile **(ai, bi), ai < bi** sortate în ordinea crescătoare a numărului **ai**, iar în caz de egalitate în ordinea crescătoare a numărului **bi**
  
Line 60: Line 60:
 == Input == == Input ==
  
-Pe prima linie din fisierul de intrare ​se vor găsi numerele P, X.+Pe prima linie se vor găsi numerele P, X.
  
  P X  P X
Line 74: Line 74:
 0 < P < 4 0 < P < 4
  
 +=== Task3. 40p ===
  
 +Cosmin si Florin au descoperit un nou joc. Ei au un teren de luptă de 8x8 codificat sub forma unui număr pe 64 de biți (unsigned long long).
 +Pe terenul de luptă se află soldați ** (codificați cu bit-ul 1) ** și celule libere ** (codificate cu bit-ul 0) **.
 +
 +<note tip>
 +
 +**7 = 0000000000000000000000000000000000000000000000000000000000000111**
 +
 +Codifică harta următoare
 +
 +^ Hartă pentru valoarea 7^^^^^^^^
 +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
 +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
 +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
 +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
 +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
 +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
 +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
 +| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
 +
 +</​note>​
 +
 +Cosmin și Florin mută alternativ câte un soldat dintr-o celulă a hărții intr-o altă celulă a hărții. ​
 +Dacă un soldat este mutat într-o celulă în care se află alt soldat se vor lupta intre ei, iar ambii vor dispărea de pe teren. Mutările făcute
 +sunt codificate sub forma unui număr întreg astfel:
 + - primii 6 biți reprezintă pozitia curentă a unui soldat pe hartă: (primii 3 biți reprezintă coloana, iar următorii 3 biți reprezintă linia).
 + - următorii 6 biti reprezintă pozitia în care soldatul se va teleporta pe harta: (primii 3 biți reprezintă coloana, iar următorii 3 biți reprezintă linia)
 +
 +<note tip>
 +
 +Numărul **2655 (baza 10) ** =  ** 101001011111 (baza 2) ** reprezinta o codificarea a următoarei mutări pe hartă:
 +
 +poziția curentă: ** (011, 111)  ** -> ** (3, 7) **
 +
 +poziția în care soldatul va fi mutat ** (101, 001) ** -> ** (5, 1) **
 +
 +</​note>​
 +
 +Fiind dată o hartă inițiala și o lista de mutări codificate ca în exemplul anterior Cosmin și Florin vă roagă să afișați configurația finală a hărții sub forma unui număr pe 64 de biți. Ei vă vor recompensa cu 40 de puncte dacă reușiți să afișați configurația finală corect.
 +
 +== Input ==
 +
 +Pe prima linie se va găsi un număr pe 64 de biți reprezentând configurația inițială a hărții.
 +
 +Pe următoarea linie se va afla un număr N, reprezentând numărul de mutări făcute de soldați.
 +
 +Pe următoarele N linii se vor afla numere întregi reprezentând codificările mutărilor.
 +
 + ConfigurațieHartă
 + N
 + mutare1
 + mutare2
 + .
 + .
 + .
 + mutareN
 +
 +== Output ==
 +
 +Configurația finală a jocului după ce au fost aplicate cele N mutări.
 +
 + ConfigurațieFinală
 +
 +== Precizări ==
 +<note warning>
 +
 + - Dacă pe poziția curentă nu se află un soldat (bit-ul corespunzător este 0) mutarea nu se va aplica
 + - Dacă pe poziția unde va fi mutat un soldat există un alt soldat ambii vor dispărea de pe hartă
 + - Folosiți tipuri de date unsigned pentru variabilele pe care faceți operații pe biți ** in special pentru configurația hărții **
 + - Numărul afisat în fișierul de ieșire **TREBUIE** să fie un număr positiv
 +
 +</​note> ​
 +
 +== Exemplu ==
 +
 +** Input: **
 + 7
 + 4
 + 3647 (muta de la (7,7) la (7,0))
 + 3710 (muta de la (7,6) la (7,1))
 + 3641 (muta de la (7,1) la (7,0))
 + 1133 (muta de la (5,5) la (2,1))
 +
 +** Output: **
 + 4
 +
 +** Explicație **
 +
 +{{http://​s4.postimg.org/​41260rbbx/​Explanation.png}}
 +
 +==== Trimitere temă ====
 +
 +Tema va fi trimisă folosind [[https://​vmchecker.cs.pub.ro|vmchecker]]
 +
 +După cum probabil ați observat task-urile au un total de 80p. Celelalte 20p se vor acorda pentru [[https://​www.kernel.org/​doc/​Documentation/​CodingStyle|coding style]].
 +
 +Formatul arhivei va fi următorul:
 + - 3 fișiere .c, câte unul pentru fiecare task
 + - Un fișier **Makefile / makefile** care să conțină următoarele reguli:
 + - build-tX: crează executabilul aferent task-ului X, X ia valori din {1, 2, 3}
 + - run-tX: rulează executabilul aferent task-ului X, X ia valori din {1, 2, 3}
 + - Un fișier README în care descrieți ideea voastră pentru fiecare dintre task-uri
 +
 +<note warning>
 +
 +Arhiva trebuie să fie de tipul zip.
 +
 +**Lipsa** fișierului README se depunctează cu 10p. 
 +
 +Inputul pentru **TOATE** task-urile va fi citit de la **stdin (tastatura)** iar output-ul va fi afișat la **stdout (ecran)**.
 +
 +Dacă nu rezolvați un anumit task regulile build-tX / run-tX corespunzătoare task-ului respectiv **trebuie** să apară in Makefile, chiar dacă ele nu vor face nimic.
 +
 +</​note>​
programare/tema1_cbcd_2015_2016.1445811924.txt.gz · Last modified: 2015/10/26 00:25 by cosmin.boaca
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