Simulatore di una macchina di turing a scopo didattico, scritta in python.
Il simulatore è utilizzabile con una versione di python >3.7.
I programmi per questo simulatore devono essere scritti in un file con estensione .tur
.
All'inizio di ogni programma dev'essere indicato lo stato di partenza (es. 0
) dopo il termine #init
.
Esempio:
#init 0
Ogni frase del programma ha una sintassi;
(stato, simbolo) > (nuovo_stato, nuovo_simbolo, movimento)
indicando in ogni posizione l'informazione relativa:
- stato | Lo stato a cui appartiene la frase
- simbolo | Il simbolo (lettera) che la frase deve riconoscere
- nuovo_stato | Lo stato che il programma deve raggiungere se il simbolo viene riconosciuto sul nastro
- nuovo_simbolo | Il simbolo utilizzato per la sostituzione nella casella
- movimento | Il movimento che la testina eseguirà a fine della frase (destra >, sinistra <, fermo -)
#init 0
(0,clc) > (1,C,<)
(1,clc) > (2,I,<)
(2,clc) > (3,A,<)
(3,clc) > (4,O,<)
La scrittura clc
indica il riconoscimento di una cella vuota (CLear Cell) sul nastro.
Opzionalmente si può indicare uno stato finale, al cui raggiungimento la macchina si ferma.
#end 4
Per eseguire un programma, basta richiamare il file turing.py
e fornire come argomento di linea di comando il nome del file del programma (es. ./examples/ciao.tur
).
Il file del programma deve trovarsi nella stessa cartella del file turing.py
se non viene specificata la posizione del primo.
python turing.py ./esempi/ciao.tur
Output:
Stato finale del nastro:
| C | I | A | O |
Se non indicato diversamente, la macchina comincia il suo funzionamento con il nastro vuoto.
Per indicare i contenuti da inserire nel nastro prima dell'esecuzione, è necessario specificarli singolarmente, spaziati tra uno e l'altro, con l'opzione da linea di comando --tape
o, abbreviato -t
.
python turing.py ./examples/divisori_5.tur --tape 1 2 3 4
Questo comando inizializzerà la macchina con, all'interno del nastro:
[ '1', '2', '3', '4']
Output:
Stato finale del nastro:
| 1 | 2 | 3 | 4 | N |
Nella cartella examples
sono presenti alcuni programmi di esempio per far funzionare la macchina.