Correzioni varie
* Un sacco di errori stupidi sistemati
This commit is contained in:
parent
ffb836b975
commit
c344dfa364
@ -9,8 +9,8 @@ class Macchina:
|
||||
self.a = trin(0)
|
||||
|
||||
#Registri
|
||||
self.d = trinlist([0 for i in range(3**5)], True)
|
||||
self.c = trinlist([0 for i in range(3**5)], True)
|
||||
self.d = trinlist()
|
||||
self.c = trinlist()
|
||||
|
||||
#Puntatori
|
||||
self.puntatore_c = trin(0)
|
||||
@ -33,16 +33,20 @@ class Macchina:
|
||||
|
||||
#Copia il programma nel registro c
|
||||
for indice, word in enumerate(programma):
|
||||
if trinord(word) not in range(33,127):
|
||||
raise SyntaxError("Carattere non consentito nel programma: '%c' a %d." % (word, indice))
|
||||
if word not in ("\n"," "):
|
||||
if trinord(word) not in range(32,127):
|
||||
raise SyntaxError("Carattere non consentito nel programma: '%c' a %d." % (word, indice))
|
||||
else:
|
||||
self.c[indice] = trinord(word)
|
||||
|
||||
#Esecuzione del programma
|
||||
while self.puntatore_c < len(programma):
|
||||
#Calcola ed esegue l'istruzione
|
||||
istruzione = self.__calcola_istruzione(trinchr(self.c[self.puntatore_c]))
|
||||
try:
|
||||
istruzioni[istruzione]()
|
||||
except KeyError:
|
||||
istruzioni["o"]()
|
||||
|
||||
#Operazioni per ogni istruzione
|
||||
self.c[self.puntatore_c] -= 33
|
||||
@ -59,7 +63,7 @@ class Macchina:
|
||||
Uo[D7,XTcA\"lI.v%{gJh4G\-=O@5`_3i< \
|
||||
?Z';FNQuY]szf$!BS/|t:Pn6^Ha"
|
||||
istruzione = (trinord(carattere) - 33 + self.puntatore_c) % 94
|
||||
return tabella[istruzione]
|
||||
return tabella[istruzione.decimale]
|
||||
|
||||
def __traduci(self):
|
||||
"""
|
||||
@ -69,8 +73,8 @@ class Macchina:
|
||||
trascrizione = str.maketrans(
|
||||
'!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN \
|
||||
OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~',
|
||||
'5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS7 2FhOA \
|
||||
1CB6v^=I_0/8|jsb9m<.TVac`uY*MK\'X~xDl}REokN:#?G"i@'
|
||||
'5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS72FhOA1 \
|
||||
CB6v^=I_0/8|jsb9m<.TVac`uY*MK\'X~xDl}REokN:#?G"i@'
|
||||
)
|
||||
istruzione = str.translate(trinchr(self.c[self.puntatore_c]), trascrizione)
|
||||
self.c[self.puntatore_c] = trinord(istruzione)
|
||||
@ -98,7 +102,6 @@ class Macchina:
|
||||
"""
|
||||
self.d[self.puntatore_d] = trin(self.a[-1] + self.a[0:-1])
|
||||
|
||||
|
||||
def __pazza(self):
|
||||
"""
|
||||
Istruzione Malbolge "p"
|
||||
@ -126,7 +129,6 @@ class Macchina:
|
||||
else:
|
||||
self.a = trinord(carattere)
|
||||
|
||||
|
||||
def __stampa(self):
|
||||
"""
|
||||
Istruzione Malbolge "/"
|
||||
|
@ -163,22 +163,23 @@ class Trilista:
|
||||
|
||||
def __init__(self, lista, converti):
|
||||
"""Inizializzazione della lista trinaria."""
|
||||
for i in lista:
|
||||
self.valori = [trin(i, converti) for i in lista]
|
||||
self.valori ={a:trin(b, converti) for a, b in enumerate(lista)}
|
||||
|
||||
#Vari override degli operatori
|
||||
|
||||
def __setitem__(self, indice, valore):
|
||||
try:
|
||||
self.valori[indice.decimale]
|
||||
self.valori[indice.decimale] = valore
|
||||
except AttributeError:
|
||||
self.valori[indice]
|
||||
self.valori[indice] = valore
|
||||
|
||||
def __getitem__(self, indice):
|
||||
try:
|
||||
return self.valori[indice.decimale]
|
||||
except AttributeError:
|
||||
return self.valori[indice]
|
||||
except KeyError:
|
||||
return trin(0)
|
||||
|
||||
def __str__(self):
|
||||
return self.valori.__str__()
|
||||
@ -207,7 +208,7 @@ def trinchr(trinario):
|
||||
"""
|
||||
return chr(trinario.decimale % 256)
|
||||
|
||||
def trinlist(lista, converti=False):
|
||||
def trinlist(lista=[], converti=False):
|
||||
"""
|
||||
Restituisce una lista accessibile da indici trinari data una lista.
|
||||
Fornire converti=False come parametro solo se gli elementi della lista
|
||||
|
Loading…
Reference in New Issue
Block a user