Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aa:lab:1 [2023/10/21 21:25]
tpruteanu [Exerciții tryhard]
aa:lab:1 [2024/10/16 23:21] (current)
dmihai [Exerciții]
Line 56: Line 56:
  
  
-==== Exerciții basic ==== +  - Scrieți o Mașină Turing care primește un șir binar și verifică dacă începe și se termină cu simboluri **distincte** ​(e.g. **1**0011011**0**)
-1. Scrieți o Mașină Turing care primește un șir binar și verifică dacă începe și se termină cu simboluri **distincte**. +  - Rezolvați exercițiul anterior pentru input în baza 10. 
-   Ex: "100110110" -> False+  - Scrieți o Mașină Turing care primește un șir binar și verifică dacă are lungime impară și simbolul din mijloc este 0 (e.g. 1011**0**0011). 
 +  - Scrieți o Mașină Turing care primește un șir binar și lasă pe bandă complementul lui (e.g. "100110100" -> "​011001011"​) 
 +  - Scrieți o Mașină Turing care curăță toată banda (atât la stânga cât și la dreapta) și apoi lasă scris doar "​1"​. 
 +  - Scrieți o Mașină Turing care inversează cuvântul primit pe bandă. 
 +  - Scrieți o Mașină Turing care primește un șir de "​X"​-uri și verifică dacă lungimea acestuia este o putere a lui 2. 
 +  - Scrieți o Mașină Turing care primește un șir de paranteze "​(",​ "​)"​ și verifică dacă sunt echilibrate. 
 +  - Scrieți o Mașină Turing care primește un număr în baza 2 și verifică dacă e divizibil cu 5. 
 +  - Scrieți o Mașină Turing care primește un cuvânt binar, găsește primul simbol "​0"​ și inserează un "​1"​ în stânga lui (deci tot ce apare la dreapta va trebui mutat cu o poziție). 
 +  - Scrieți o Mașină Turing care primește două numere în baza 2, big-endian, separate de un # și lasă pe bandă suma lor (e.g. "​1011#​11001"​ -> "​100100"​). 
 +  - Scrieți o Mașină Turing care primește un șir binar și lasă pe bandă, după un caracter "#",​ numărul de 0-uri, în bază 2 (e.g. "​100010110"​ -> "​100010110#​101"​).
  
-2. Scrieți o Mașină Turing care primește un șir binar și verifică dacă are lungime impară și simbolul din mijloc este 0. 
-   Ex: "​101100011"​ -> True 
- 
-3. Scrieți o Mașină Turing care primește un șir binar și lasă pe bandă complementul lui. 
-   Ex: "​000110111"​ -> "​111001000"​ 
- 
-4. Scrieți o Mașină Turing care curăță toată banda (atât la stânga cât și la dreapta) și apoi lasă scris doar "​1"​. 
- 
-5. Scrieți o Mașină Turing care inversează cuvântul primit pe bandă. 
- 
-==== Exerciții fun ==== 
-6. Alex ascultă muzică doar dacă numărul melodiilor din playlist este putere a lui 2. Dându-se un șir de "​M"​-uri,​ verifică dacă Alex poate asculta acest playlist sau nu. 
- 
-7. Cățelul Max dorește sa-și facă tema la SDA, dar, din păcate, ca orice alt câine, acesta este color blind și, deci, nu vede dacă anumite paranteze sunt roși. Ajută-l pe Max să-și dea seama dacă parantezele din codul său sunt echilibrate. 
-   Ex: ()((()())) -> True 
-       ​()((()())( -> False 
- 
-8. Diana are in frigider doar conserve de mazăre("​M"​) și sticle de lapte("​L"​). Aceasta a mai cumpărat lapte de la magazin și vrea să așeze câte o sticlă de lapte după fiecare conservă de mazăre, mutând restul conținutului din frigider la dreapta. 
-   Ex: "​MML"​ -> "​MLMLL"​ 
- 
-9. Johnny maimuța se afla la capătul unui șir format din banane("​B"​) si mere("​M"​). Ajutați-l pe Johnny să numere bananele și, apoi, să fugă cu ele la capătul șirului. 
-   Ex: "​JBBMBMBMB"​ -> "​BBMBMBMBJ101"​ 
- 
-==== Exerciții tryhard ==== 
-10. Scrieți o Mașină Turing care primește două numere în baza 2, big-endian, separate de un # și lasă pe bandă suma lor. 
-   Ex: "​1011#​11001"​ -> "​100100"​ 
-  ​ 
 <​note>​ <​note>​
-Soluțiile pentru exercițiile din laborator se pot găsi [[aa:​lab:​sol:​1|aici]].+Soluțiile pentru exercițiile din laborator, în format pentru simulatorul online și xlsx, se pot găsi [[aa:​lab:​sol:​1|aici]]; (soluțiile nu sunt unice, există abordări corecte, total diferite de cele prezentate de noi).
 </​note>​ </​note>​