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 [2022/10/05 16:17]
dmihai [Exerciții]
aa:lab:1 [2024/10/16 23:21] (current)
dmihai [Exerciții]
Line 7: Line 7:
 === turingmachinesimulator.com === === turingmachinesimulator.com ===
  
- Un exemplu ușor de folosit este [[https://​turingmachinesimulator.com/​|acesta.]] Mașina Turing ​de mai sus rescrisă în formatul dorit arată așa:+ Un exemplu ușor de folosit este [[https://​turingmachinesimulator.com/​|acesta.]] ​Mașina Turing ​scrisă în formatul dorit arată așa:
  
 <​code>​ <​code>​
 name: Binary increment name: Binary increment
-init: q1 +init: start 
-accept: ​q3+accept: ​H, Y
  
-q1,0 +//start: starea de începutse duce la finalul numărului 
-q1,0,>+//find0: caută un pentru a-l incrementa
  
-q1,1 +start,0 
-q1,1,>+start,0,>
  
-q1,_ +start,1 
-q2,_,<+start,1,>
  
-q2,0 +start,_ 
-q3,1,-+find0,_,<
  
-q2,1 +find0,0 
-q2,0,<+Y,1,- 
 + 
 +find0,1 
 +find0,0,< 
 + 
 +find0,_ 
 +Y,1,-
  
-q2,_ 
-q3,1,- 
 </​code>​ </​code>​
  
 Ștergeți tot textul care apare, înlocuiți-l cu descrierea mașinii și apăsați compile. Va apărea o căsuță de input în care puteți scrie cuvântul care va fi inițial pe bandă; apoi apăsați play. Ștergeți tot textul care apare, înlocuiți-l cu descrierea mașinii și apăsați compile. Va apărea o căsuță de input în care puteți scrie cuvântul care va fi inițial pe bandă; apoi apăsați play.
  
-=== jflap ===+=== Tabela de tranziții ​===
  
-[[https://www.jflap.org/|JFLAP]] este un program educațional în Java, dezvoltat ​pentru ​ilustrarea mai multor concepte de bază din computer science; îl veți găsi util și în anul 3, la Limbaje Formale și Automate. Pentru ​face rost de el, completați formularul din secțiunea "Get JFLAP"​. Apoi deschideți programul, selectați "​Turing Machine"​. Aici puteți să definiți propria mașină sub formă de graf sau să deschideți una (File -> Open)Mașina Turing de mai sus în format JFLAP: +O altă metodă de redactare ar fi sub forma de tabelă de tranziții folosind Excel, ulterior folosind ​[[https://drive.google.com/​drive/​folders/​1EE_G1ovtsquG3Y6uWkldwHpZ2CqMa9u8?​usp=sharing/|scriptul]] pentru a-l converti ​in formatul dorit
- +**Exemplu:** [[https://docs.google.com/​spreadsheets/​d/​1XjNYvHu2oyaTei41irkWRtI4Cppp_hvK/​edit?​usp=sharing&​ouid=113096868136191520794&​rtpof=true&​sd=true/​|Excel.]]
-{{:aa:lab:​binary_increment.zip|}}+
  
  
Line 51: Line 54:
 Pentru exercițiile care menționează că inputul este un număr, acesta e fie numărul zero, fie începe cu o cifră diferită de 0. Cifrele numărului sunt scrise de la stânga la dreapta. Pentru exercițiile care menționează că inputul este un număr, acesta e fie numărul zero, fie începe cu o cifră diferită de 0. Cifrele numărului sunt scrise de la stânga la dreapta.
 </​note>​ </​note>​
 +
  
   - 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**).   - 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**).
 +  - Rezolvați exercițiul anterior pentru input în baza 10.
   - 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 verifică dacă are lungime impară și simbolul din mijloc este 0 (e.g. 1011**0**0011).
-  - Rezolvați primele două exerciții pentru input în baza 10. 
   - 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 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 curăță toată banda (atât la stânga cât și la dreapta) și apoi lasă scris doar "​1"​.
Line 63: Line 67:
   - 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 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 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"​)+  - 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"​)
 + 
 +<​note>​ 
 +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>​