
Handelt sich lediglich um einen kleinen Übersetzer, wie der Title schon vermuten lässt.
Code: Alles auswählen
#!/usr/bin/env python
import random
LEET_ENCODE = {
"A" : ("A", "a", "4", "@", "/-\\", "/\\", "^", "ci"),
"B" : ("B", "b", "8", "|3", "6", "13", "\xdf", "]3", "I3"),
"C" : ("C", "c", "(", "<", "\xa2", "{", "\xa9"),
"D" : ("D", "d", "|)", "I)", "|>", "I>", "]>", "[>", "cl", "cI"),
"E" : ("E", "e", "3", "\x80", "&", "[-"),
"F" : ("F", "f", "|=", "I=", "}", "]=", "(=", ")="),
"G" : ("G", "g", "6", "9", "(_+", "cj"),
"H" : ("H", "h", "|-|", "#", "]-[", "[-]", ")-(", "(-)", ":-:" "}{", "}-{"),
"I" : ("I", "i", "1", "!", "|", ";"),
"J" : ("J", "j", "_|", "_/", "]", "\xbf", "</", "_)"),
"K" : ("K", "k", "X", "|<", "I<", "]<", "|X", "|{"),
"L" : ("L", "l", "|", "|_", "\xa3", "1", "7", "\xac"),
"M" : ("M", "m", "|V|", "|v|", "/\\/\\", "|\\/|", "^^", "nn", "(V)", "(v)",
"(\\/)", "/|\\", "/|/|", ".\\\\", "/^^\\", "/V\\", "|^^|"),
"N" : ("N", "n", "|\|", "/|/", "]\\[", "//"),
"O" : ("O", "o", "0", "()", "[]", "\xa4", "<>", "@"),
"P" : ("P", "p", "|o", "|*", "\xb0", "|>", "|?", "|7", "q", "\xfe", "\xb6"),
"Q" : ("Q", "q", "p", "O_", "0,", "(,)", "9", "\xb6", "O,"),
"R" : ("R", "r", "|2", "/2", "I2", "I^", "|^", "lz", "Iz", "|z", "l2"),
"S" : ("S", "s", "Z", "z", "5", "$", "\xa7"),
"T" : ("T", "t", "7", "+", "-|-", "1", "\x86"),
"U" : ("U", "u", "|_|", "(_)", "\\_/", "\\_\\", "/_/", "]_[", "\xb5"),
"V" : ("V", "v", "\\/"),
"W" : ("W", "w", "\\/\\/", "vv", "VV", "uu", "UU", "'//", "\\\\'", "\\^/",
"(n)", "\\X/", "\\|/", "\\_|_/", "\\_:_/"),
"X" : ("X", "x", "><", "}{", "*", ")("),
"Y" : ("Y", "y", "\xa5", "\xd7", "j", "`/", "\xff"),
"Z" : ("Z", "z", "2", "~/_", "7_", "%")
}
LEET_LENGTH = 5
LEET_DECODE = dict()
for key, values in LEET_ENCODE.iteritems():
for value in values:
LEET_DECODE[value] = key
def encode(text):
leet = []
for char in text:
try:
leet.append(random.choice(LEET_ENCODE[char.upper()]))
except KeyError:
leet.append(char)
return "".join(leet)
def decode(leet):
text = []
index = 0
while index < len(leet):
for size in xrange(LEET_LENGTH):
chunksize = LEET_LENGTH - size
chars = leet[index:index + chunksize]
if chars in LEET_DECODE:
text.append(LEET_DECODE[chars])
break
elif chunksize == 1:
text.append(chars)
index += chunksize
return "".join(text)
Genaugenommen prüfe ich ob die längst Zeichenkette ein Buchstabe existiert und dann werde ich kleiner, damit habe ich aber einfach nur eine "hohe" Warscheinlichkeit das es zumindest Lesbar wird

Andere Ansätze, Ideen oder Verbesserungen ?