This shows you the differences between two versions of the page.
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> |