class LogicUnit: "Unita' logica della macchina di Turing" def __init__(self, matrice): self.InfoMatriceFunzionale = matrice[0] self.MatriceFunzionale = matrice[1] def valuta(self, (esterno, interno)): """ Cerca sulla tabella i tre valori di uscita corrispondenti ai due di ingresso Rende NULL se il il valore non viene trovato """ return self.MatriceFunzionale.get((str(esterno), str(interno))) |
class MacchinaDiTuring(LogicUnit): "Implementazione in python della Macchina di Turing" def __init__(self, matrice, NastroOriginale, PosizioneIniziale, ValoreIniziale): #Per inizializzare la classe generatrice devo riferirmi direttamente #al metodo __init__ LogicUnit.__init__(self, matrice) self.NastroOriginale, self.nastro = NastroOriginale, NastroOriginale self.PosizioneIniziale, self.posizione = PosizioneIniziale, PosizioneIniziale self.ValoreIniziale, self.valore = ValoreIniziale, ValoreIniziale self.passo = 0 |
def Passo(self): "Va avanti di un ciclo" self.passo = self.passo + 1 if(self.valore != '!'): #Se non ho finito... #Legge il valore presente sul nastro alla posizione corrente, #se l'indice e' esterno all'array rende ' ' try: esterno = self.nastro[self.posizione] except: esterno = ' ' interno = self.valore risposta = self.valuta((esterno, interno)) #Scrive il valore di ritorno sul nastro alla posizione corrente, #se l'indice e' esterno all'array aggiunge ' ' if self.posizione < 0: #inserisce in testa e riporta il carrello a 0 (cioe' su quello che ho #appena inserito self.nastro.insert(0, risposta[0]) self.posizione = 0 else: try: #cerco di modificare il valore self.nastro[self.posizione] = risposta[0] except: #se non ci riesco allora aggiungo in coda self.nastro.append(risposta[0]) #Aggiorna la posizione sul nastro self.posizione = self.posizione + int(risposta[1]) self.valore = risposta[2] return 1 #c'e' ancora da fare else: return 0 #ho finito |
Ultima modifica 29/01/2004
Per ogni suggerimento/errore contattatemi liberamente: Matteo Bertini
Commenti |
Rick -- 2003-10-23 17:31:47 Salve, mi chiamo Rick E mi sto addentrando in Python, la Macchina di Turing mi ha incuriosito e trovare questo connubio, mi ha fatto molto piacere. Col tempo, mi leggero il tuo codice, per il momento grazie. R B K R N @ L I B E R O . I T Rick |
DIO -- 2005-03-14 09:02:04 salve a tutti!!! |
sceva -- 2008-05-07 21:31:23 ma che codice è questo fa proprio cagar.....?????????? |
Picchio -- 2010-06-11 12:33:40 ahaha! Grandissimo Teo! =) |
giovannone coscialunga -- 2006-11-17 19:43:40 matteo ti prego rifai la macchina di turing in modo migliore |
Badussi -- 2006-03-11 19:46:58 il tuo codice fa cacaaaaaaaaaaaaa!!!!!!! |
Matteo -- 2006-05-04 09:08:19 E lo so! Ma mi fa fatica rifallo! ... via, programmavo in Python da due mesi! |
This work is licensed under a Creative Commons License.