Correzione PEP8
This commit is contained in:
parent
c344dfa364
commit
a65f02b198
15
666.py
15
666.py
@ -2,21 +2,22 @@ import malbolge
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
istruzioni = [
|
istruzioni = [
|
||||||
"Utilizzo:",
|
"Utilizzo:",
|
||||||
"666 [-f] input",
|
"666 [-f] input",
|
||||||
" * -f: specifica un file.",
|
" * -f: specifica un file.",
|
||||||
" * input: file o codice da eseguire."
|
" * input: file o codice da eseguire."
|
||||||
]
|
]
|
||||||
|
|
||||||
def utilizzo():
|
|
||||||
|
def utilizzo():
|
||||||
print(*istruzioni, sep="\n")
|
print(*istruzioni, sep="\n")
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
programma = sys.argv[1]
|
programma = sys.argv[1]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
utilizzo()
|
utilizzo()
|
||||||
|
|
||||||
if sys.argv[1] == "-f":
|
if sys.argv[1] == "-f":
|
||||||
try:
|
try:
|
||||||
programma = open(sys.argv[2]).read()
|
programma = open(sys.argv[2]).read()
|
||||||
@ -28,6 +29,6 @@ if sys.argv[1] == "-f":
|
|||||||
exit("File vuoto.")
|
exit("File vuoto.")
|
||||||
else:
|
else:
|
||||||
programma = sys.argv[1]
|
programma = sys.argv[1]
|
||||||
|
|
||||||
macchina = malbolge.Macchina()
|
macchina = malbolge.Macchina()
|
||||||
macchina.esegui(programma)
|
macchina.esegui(programma)
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
from .trinario import *
|
from .trinario import *
|
||||||
|
|
||||||
|
|
||||||
class Macchina:
|
class Macchina:
|
||||||
|
|
||||||
def esegui(self, programma):
|
def esegui(self, programma):
|
||||||
"""Esegue il programma Malbolge fornito come stringa."""
|
"""Esegue il programma Malbolge fornito come stringa."""
|
||||||
|
|
||||||
#Accumulatore
|
#Accumulatore
|
||||||
self.a = trin(0)
|
self.a = trin(0)
|
||||||
|
|
||||||
#Registri
|
#Registri
|
||||||
self.d = trinlist()
|
self.d = trinlist()
|
||||||
self.c = trinlist()
|
self.c = trinlist()
|
||||||
@ -15,7 +16,7 @@ class Macchina:
|
|||||||
#Puntatori
|
#Puntatori
|
||||||
self.puntatore_c = trin(0)
|
self.puntatore_c = trin(0)
|
||||||
self.puntatore_d = trin(0)
|
self.puntatore_d = trin(0)
|
||||||
|
|
||||||
istruzioni = {
|
istruzioni = {
|
||||||
"j": self.__scambia_d,
|
"j": self.__scambia_d,
|
||||||
"i": self.__scambia_c,
|
"i": self.__scambia_c,
|
||||||
@ -26,19 +27,21 @@ class Macchina:
|
|||||||
"v": self.__esci,
|
"v": self.__esci,
|
||||||
"o": self.__nulla,
|
"o": self.__nulla,
|
||||||
}
|
}
|
||||||
|
|
||||||
#Controllo lunghezza massima
|
#Controllo lunghezza massima
|
||||||
if len(programma) > 3**10:
|
if len(programma) > 3 ** 10:
|
||||||
raise MemoryError("Memoria esaurita. Limite di 3^10 word superato.")
|
raise MemoryError("Memoria esaurita. Limite di 3^10 word superato.")
|
||||||
|
|
||||||
#Copia il programma nel registro c
|
#Copia il programma nel registro c
|
||||||
for indice, word in enumerate(programma):
|
for indice, word in enumerate(programma):
|
||||||
if word not in ("\n"," "):
|
if word not in ("\n", " "):
|
||||||
if trinord(word) not in range(32,127):
|
if trinord(word) not in range(32, 127):
|
||||||
raise SyntaxError("Carattere non consentito nel programma: '%c' a %d." % (word, indice))
|
raise SyntaxError("Carattere non consentito nel programma:\
|
||||||
|
'%c' a %d." % (word, indice)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
self.c[indice] = trinord(word)
|
self.c[indice] = trinord(word)
|
||||||
|
|
||||||
#Esecuzione del programma
|
#Esecuzione del programma
|
||||||
while self.puntatore_c < len(programma):
|
while self.puntatore_c < len(programma):
|
||||||
#Calcola ed esegue l'istruzione
|
#Calcola ed esegue l'istruzione
|
||||||
@ -53,10 +56,10 @@ class Macchina:
|
|||||||
self.__traduci()
|
self.__traduci()
|
||||||
self.puntatore_c += 1
|
self.puntatore_c += 1
|
||||||
self.puntatore_d += 1
|
self.puntatore_d += 1
|
||||||
|
|
||||||
def __calcola_istruzione(self, carattere):
|
def __calcola_istruzione(self, carattere):
|
||||||
"""
|
"""
|
||||||
Calcola l'istruzione da eseguire
|
Calcola l'istruzione da eseguire
|
||||||
in base al carattere presente nel puntatore.
|
in base al carattere presente nel puntatore.
|
||||||
"""
|
"""
|
||||||
tabella = "+b(29e*j1VMEKLyC})8&m#~W>qxdRp0wkr \
|
tabella = "+b(29e*j1VMEKLyC})8&m#~W>qxdRp0wkr \
|
||||||
@ -64,44 +67,44 @@ class Macchina:
|
|||||||
?Z';FNQuY]szf$!BS/|t:Pn6^Ha"
|
?Z';FNQuY]szf$!BS/|t:Pn6^Ha"
|
||||||
istruzione = (trinord(carattere) - 33 + self.puntatore_c) % 94
|
istruzione = (trinord(carattere) - 33 + self.puntatore_c) % 94
|
||||||
return tabella[istruzione.decimale]
|
return tabella[istruzione.decimale]
|
||||||
|
|
||||||
def __traduci(self):
|
def __traduci(self):
|
||||||
"""
|
"""
|
||||||
Trascive l'istruzione nel registro del
|
Trascive l'istruzione nel registro del
|
||||||
codice seguendo la tavola di conversione.
|
codice seguendo la tavola di conversione.
|
||||||
"""
|
"""
|
||||||
trascrizione = str.maketrans(
|
trascrizione = str.maketrans(
|
||||||
'!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN \
|
'!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN \
|
||||||
OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~',
|
OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~',
|
||||||
'5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS72FhOA1 \
|
'5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS72FhOA1 \
|
||||||
CB6v^=I_0/8|jsb9m<.TVac`uY*MK\'X~xDl}REokN:#?G"i@'
|
CB6v^=I_0/8|jsb9m<.TVac`uY*MK\'X~xDl}REokN:#?G"i@'
|
||||||
)
|
)
|
||||||
istruzione = str.translate(trinchr(self.c[self.puntatore_c]), trascrizione)
|
istruzione = str.translate(trinchr(self.c[self.puntatore_c]), trascrizione)
|
||||||
self.c[self.puntatore_c] = trinord(istruzione)
|
self.c[self.puntatore_c] = trinord(istruzione)
|
||||||
|
|
||||||
#Istruzioni
|
#Istruzioni
|
||||||
|
|
||||||
def __scambia_d(self):
|
def __scambia_d(self):
|
||||||
"""
|
"""
|
||||||
Istruzione Malbolge "j"
|
Istruzione Malbolge "j"
|
||||||
Assegna al data pointer il valore a cui punta.
|
Assegna al data pointer il valore a cui punta.
|
||||||
"""
|
"""
|
||||||
self.puntatore_d = self.d[self.puntatore_d]
|
self.puntatore_d = self.d[self.puntatore_d]
|
||||||
|
|
||||||
def __scambia_c(self):
|
def __scambia_c(self):
|
||||||
"""
|
"""
|
||||||
Istruzione Malbolge "i"
|
Istruzione Malbolge "i"
|
||||||
Assegna al code pointer il valore puntato dal data pointer.
|
Assegna al code pointer il valore puntato dal data pointer.
|
||||||
"""
|
"""
|
||||||
self.puntatore_c = self.d[self.puntatore_d]
|
self.puntatore_c = self.d[self.puntatore_d]
|
||||||
|
|
||||||
def __ruota(self):
|
def __ruota(self):
|
||||||
"""
|
"""
|
||||||
Istruzione Malbolge "*"
|
Istruzione Malbolge "*"
|
||||||
Ruota la word puntata dal data pointer di un trit verso destra.
|
Ruota la word puntata dal data pointer di un trit verso destra.
|
||||||
"""
|
"""
|
||||||
self.d[self.puntatore_d] = trin(self.a[-1] + self.a[0:-1])
|
self.d[self.puntatore_d] = trin(self.a[-1] + self.a[0:-1])
|
||||||
|
|
||||||
def __pazza(self):
|
def __pazza(self):
|
||||||
"""
|
"""
|
||||||
Istruzione Malbolge "p"
|
Istruzione Malbolge "p"
|
||||||
@ -109,13 +112,13 @@ class Macchina:
|
|||||||
puntato dal data pointer. Poi salva il risultato nell'accumulatore
|
puntato dal data pointer. Poi salva il risultato nell'accumulatore
|
||||||
e nel registro dei dati.
|
e nel registro dei dati.
|
||||||
"""
|
"""
|
||||||
operazione = [[1,0,0],[1,0,2],[2,2,1]]
|
operazione = [[1, 0, 0], [1, 0, 2], [2, 2, 1]]
|
||||||
risultato = []
|
risultato = []
|
||||||
for i,j in zip(self.a, self.d[self.puntatore_d]):
|
for i, j in zip(self.a, self.d[self.puntatore_d]):
|
||||||
risultato += operazione[i][j],
|
risultato += operazione[i][j],
|
||||||
self.d[self.puntatore_d] = trin(risultato)
|
self.d[self.puntatore_d] = trin(risultato)
|
||||||
self.a = trin(risultato)
|
self.a = trin(risultato)
|
||||||
|
|
||||||
def __leggi(self):
|
def __leggi(self):
|
||||||
"""
|
"""
|
||||||
Istruzione Malbolge "<"
|
Istruzione Malbolge "<"
|
||||||
@ -128,7 +131,7 @@ class Macchina:
|
|||||||
raise TypeError("Si attendeva un carattere: letta una stringa nulla.")
|
raise TypeError("Si attendeva un carattere: letta una stringa nulla.")
|
||||||
else:
|
else:
|
||||||
self.a = trinord(carattere)
|
self.a = trinord(carattere)
|
||||||
|
|
||||||
def __stampa(self):
|
def __stampa(self):
|
||||||
"""
|
"""
|
||||||
Istruzione Malbolge "/"
|
Istruzione Malbolge "/"
|
||||||
|
Loading…
Reference in New Issue
Block a user