
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.