Correzione PEP8

This commit is contained in:
Rnhmjoj 2013-08-25 19:31:57 +02:00
parent c344dfa364
commit a65f02b198
2 changed files with 35 additions and 31 deletions

15
666.py
View File

@ -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)

View File

@ -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 "/"