Der Code:
Code: Alles auswählen
character2leet_speak={'a': '4', 'b': '|3', 'c': '<', 'd': '|)', 'e': '3', 'f': 'f', 'g': '6',
'h': '|-|', 'i': '!', 'j': 'j', 'k': '|<', 'l': '1', 'm': '|\/|', 'n': '|/|',
'o': '0', 'p': '|*', 'q': 'q', 'r': '|2', 's': '5', 't': '+', 'u': '|_|',
'v': '\\/', 'w': '\\/\\/', 'x': 'x', 'y': 'y', 'z': '2', '!': '°!', '?': '°?'}
def find_longest_translation(dic):
maxlen=0
for i in dic:
if len(str(dic[i]))>maxlen:
maxlen=len(str(dic[i]))
return maxlen
def inverted_dict(dictionary):
return dict((v, k) for k, v in dictionary.items())
def encrypt_leetcode(string, codedic=None):
global character2leet_speak
leetcode=''
if codedic is None:
codedic=character2leet_speak
for letter in string.lower():
if letter in codedic:
leetcode+=codedic[letter]
else:
leetcode+=letter
return leetcode
def decode_leetcode(string, codedic=None):
global character2leet_speak
if codedic is None: #Wenn codedic nicht angegeben ist,
codedic=character2leet_speak #wird das standartd dictionary hergenommen.
normaltext=''
memory=''
maxlen=find_longest_translation(codedic)
codedic=inverted_dict(codedic)
for letter in string:
if len(memory)<maxlen: #ueberprueft ob der Speicher vollgeschrieben ist, wenn nicht wird er vollgeschrieben
print(memory)
memory+=letter
continue #verhindert das ausführen des folgenden code bis der Speicher voll ist
for i in range(maxlen):
print('\t'+str(memory[0: len(memory)-i]))
if memory[0: len(memory)-i] in codedic:
normaltext+=codedic[memory[0: len(memory)-i]]
print('\t\t'+normaltext)
memory=memory[len(memory)-i:]
break
elif i == maxlen-1:
print('unbekantes Zeichen identifiziert')
normaltext+=memory[0: 1]
print('\t\t'+normaltext)
memory=memory[1:]
break
if len(memory)>0:
print('noch nicht fehrtig')
print(memory)
for letter in memory:
for i in range(maxlen):
print('\t'+str(memory[0: len(memory)-i]))
if memory[0: len(memory)-i] in codedic:
normaltext+=codedic[memory[0: len(memory)-i]]
print('\t\t'+normaltext)
memory=memory[len(memory)-i:]
break
elif i == maxlen-1:
print('unbekantes Zeichen identifiziert')
normaltext+=memory[0: 1]
print('\t\t'+normaltext)
memory=memory[1:]
break
return normaltext
if __name__ == '__main__':
print(decode_leetcode('|-|4110'))
Code: Alles auswählen
|
|-
|-|
|-|4
|-|
h
4
41
noch nicht fehrtig
410
410
41
4
ha
10
1
hal
0
halo
halo
Ohne tab: memory auffüllen
ein tab: memory auf Zeichen durchsuchen
zwei tabs: ausgabe des erkannten Zeichens