This is an old revision of the document!


Mașina Turing

Simulatoare de Mașini Turing

Simulatoarele de Mașini Turing sunt unelte foarte utile pentru vizualizarea modului de lucru al unei mașini. Fiecare simulator vine cu propriul său format de input, deci citiți cu atenție specificația.

turingmachinesimulator.com

Un exemplu ușor de folosit este acesta. O Mașina Turing scrisă în formatul dorit arată așa:

name: Binary increment
init: start
accept: H, Y

//start: starea de început, se duce la finalul numărului
//find0: caută un 0 pentru a-l incrementa

start,0
start,0,>

start,1
start,1,>

start,_
find0,_,<

find0,0
Y,1,-

find0,1
find0,0,<

find0,_
Y,1,-

Ș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.

Tabela de tranziții

O altă metodă de redactare ar fi sub forma de tabelă de tranziții folosind Excel, ulterior folosind scriptul pentru a-l converti in formatul dorit. Exemplu: Excel.

Exercițiile din cadrul acestui laborator vă cer să descrieți diverse Mașini Turing.

În toate exercițiile convenția este că la începutul rulării, pe bandă se află doar inputul (restul celulelor sunt goale), iar capul de citire e poziționat pe cel mai din stânga simbol.

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.

Exerciții basic

1. Scrieți o Mașină Turing care primește un șir binar și verifică dacă începe și se termină cu simboluri distincte.

 Ex: "100110110" -> False

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"