Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- # -->> Truzzator V 0.1 <--
- # BeLLa Zio, è scrito in Python 2.7.2+
- #
- # By: Enrico `tpaper' Ronconi ronconi.enrico@yahoo.it
- # From original PHP project of Diego `nolonx' Malatesta
- #
- # 10 Gennaio 2012
- #
- # ITALIAN
- # ************** IMPOSTAZIONI **************
- # Fra parentesi i valori/intervalli consigliati/predefiniti
- lim = 2 #Caratteri minimi per corrompere la parola (2) (La modifica può comportare errori)
- d_intercalari_rec = 11 #Reciproco della densità di intercalari. Immaginando che sia x, inserisce un intercalare ogni x parole. (7-12)
- d_errori_rec = 15 #Reciproco della densità di errore. Immaginando che si chiami x, genera un errore ogni x parole. (14-20)
- case_swap = False #Abilita lo sWaP CaSe, che da un fastidio boia (False)
- acc_swap = False #Abilita lo swàp dèll'àccèntò (False)
- import random
- #Dizionario del truzzo
- diz = [\
- #Indice 0: Inizio della frase
- ['Bella','Hey','A'],\
- #Indice 1: Apposizione dell'indice zero (es. Bella fra, Hey fra)
- ['zio','fratè'],\
- #Indice 2: Intercalari
- ['zio','cioè','inzomma','spaccaa','minchia oh','porcoddue','cazzo','figa','figa','figa'],\
- #Indice 3: Sostituzioni
- [ ['per','x'], ['ch','k'], [' sei ',' 6 '], [' ci ',' c '], ['ciao','bellazzio!'], ['sono', 'sn'], ['non', 'nn'], ['comunque','cmq'], ['stella', 'stela'], ['qualcosa', 'qlc'], ['qualcuno', 'qlc'], ['qualunque', 'qlc'], ['qualsiasi', 'qls'], ['capito','cpt'], ['va bene','vbb']],\
- #Indice 4: Errori grammaticali (Beta)
- [ ['a me','a me mi'], ['ma','ma però']],\
- #Indice 5: Chiusura frase
- ['capito','ce la so xò eh'],\
- #Indice 6: Errore di invio
- ['ù','+'],\
- #Indice 7: Caratteri di errore
- 'q w e r t y u i o p è a s d f g h j k l ò à ù z x c v b n m'.split()]
- acc = [['a','à'], ['e','è'], ['i','ì'], ['o','ò'], ['u','ù']]
- def unisci(lista,sep): #Unisce una lista di stringhe in una stringa
- risultato = '' #Crea la stringa del risultati
- for a in lista: #Per ogni elemento di lista
- risultato += (a + sep) #Aggiunge il suo contenuto al risultato
- return risultato #Restituisce il risultato
- def corrompi_parola(parola):
- global diz
- parola = list(parola) #Converte la stringa parola in lista per gestirla meglio
- lunghezza = len(parola) #Lunghezza della parola
- caso = random.randint(0,1) #Sceglie se modificare una lettera (1) o eliminarla (0)
- lettera = random.randint(0,lunghezza - 1) #Sceglie la lettera da corrompere
- if caso == 0:
- parola.pop(lettera) #Elimina la lettera
- else:
- parola[lettera] = diz[7][random.randint(0,len(diz[7]) - 1)] #Cambia la lettera con una lettera caso
- parola = unisci(parola,'') #Converte la lista parola in stringa per restituirla alla frase
- return parola #Restituisce la parola corrotta
- def errore_ortografico(frase,d,limite): #Genera errori ortografici a caso nella frase
- if limite <= 2:
- return frase #Ferma se il limite della lunghezza minima di parole da taroccare è inferiore a 2
- lunghezza = len(frase)
- n = lunghezza/d + 1 #Numero di errori da generare, circa uno ogni 'd' parole
- taroccate = [-6] #Lista di parole già taroccate da non corrompere troppo
- for a in range(0,len(frase)): #Aggiunge alle parole da non taroccare le parole composte da meno di 4 caratteri
- if len(frase[a]) <= limite:
- taroccate.append(a)
- if len(frase) - len(taroccate) < n+1:
- n = len(frase) - len(taroccate) -1 #Se ci sono troppe poche parole da corrompere, diminuisce il numero di parole da corrompere
- attuale = -6 #Valore iniziale tarocco
- for a in range(0,n+1): #Genera n errori
- while attuale in taroccate: #Controlla se la parola è già corrotta (Evita più errori nella stessa frase)
- attuale = random.randint(0,lunghezza - 1) #Se è già corrotta, ne sceglie un'altra
- taroccate.append(attuale) #Aggiunge la parola alla lista di parole già corrotte
- frase[attuale] = corrompi_parola(frase[attuale]) #Corrompe la parola
- return frase #Restituisce la frase con errori ortografici
- def intercalare(frase,dens): #Aggiunge intercalari truzzesi
- global diz
- lunghezza = len(frase)
- n = lunghezza/dens #Numero di intercalari da inserire
- pos_taroccate=[-6] #Posizioni ove è già stato aggiunto un intercalare
- attuale=-6
- for a in range(1,n+1): #Genera n intercalari
- while attuale in pos_taroccate: #Controlla se la posizione contiene già un intercalare
- attuale = random.randint(1,lunghezza - 1) #Se un intercalare è già in quella posizione, ne sceglie un'altra
- pos_taroccate.append(attuale) #Aggiunge la posizione alla lista di posizioni con intercalari
- frase.insert(attuale,diz[2][random.randint(0,len(diz[2])-1)]) #Inserisce un intercalare a caso in posizione attuale
- return frase #Restituisce la frase con intercalare
- def sost(frase):
- global diz
- for a in diz[3]:
- while a[0] in frase.lower():
- frase = s(frase,frase.lower().find(a[0]),len(a[0]),a[1])
- return frase
- def s(frase,pos,l,new):
- return frase[0:pos]+new+frase[pos+l:len(frase)]
- def case(frase):
- p = 0
- f = []
- for a in frase:
- par = []
- for z in list(a):
- p += [0,0,0,0,0,0,-1,-1,+1,+1,-2,+2,+3][random.randint(0,12)]
- if p%2 == 0:
- par.append(z.swapcase())
- else:
- par.append(z)
- p += 1
- f.append(unisci(par,''))
- return f
- def truzza(frase,dens_int,dens_err,cs): #Truzza la frase
- global diz
- global lim
- frase = sost(frase)
- frase = frase.split()
- frase = errore_ortografico(frase,dens_err,lim)
- frase = intercalare(frase,dens_int)
- frase = unisci(frase,' ')
- frase = diz[0][random.randint(0,len(diz[0])-1)]+' '+diz[1][random.randint(0,len(diz[1])-1)]+' '+frase
- frase += diz[5][random.randint(0,len(diz[5])-1)]+' '+diz[1][random.randint(0,len(diz[1])-1)]+'?'
- if cs == True:
- frase = frase.split()
- frase = case(frase)
- frase = unisci(frase,' ')
- return frase
- if acc_swap == True:
- for a in acc:
- diz[3].append(a)
- def main():
- global lim,d_intercalari_rec,d_errori_rec,case_swap
- print 'Parla anche tu con i truzzi e i bimbominchia con Truzzator versione 0.1!'
- print 'Digita una frase nulla per uscire'
- vero = raw_input('Frase > ')
- while vero != '':
- print 'Truzzata:\n\n',truzza(vero,d_intercalari_rec,d_errori_rec,case_swap),'\n\n\n'
- vero = raw_input('Frase > ')
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement