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. Mașina Turing de mai sus rescrisă î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.
O altă metodă de redactare ar fi folosind Excel, ulterior folosind scriptul pentru a-l converti in formatul dorit. Exemplu Excel.
Exerciții
Î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
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. Lu-K Beats a primit de la Amtilb un beat format doar din notele muzicale mi(notat in continuare cu “M”) si la (“L”). Acesta vrea să adauge după fiecare notă de mi, cate un la, mutând toate celelalte note cu o poziție la dreapta. Ajută-l pe Lu-K sa scoată acest hit.
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"