Commit b54876ef authored by Linus Jahn's avatar Linus Jahn 🍙

huffman: Add TGListe

parent c0c0a7c3
......@@ -35,24 +35,69 @@ class Textgewicht(object):
def __add__(self, other):
if self.text == other.text:
Textgewicht(self.text, self.gewicht + other.gewicht)
return Textgewicht(self.text, self.gewicht + other.gewicht)
return Textgewicht(self.text + other.text,
self.gewicht + other.gewicht)
return Textgewicht(self.text + other.text, self.gewicht + other.gewicht)
def __str__(self):
return "{} ({})".format(self.text, self.gewicht)
def usage():
print("Usage:")
print(sys.argv[0] + " [input]")
def __lt__(self, other):
return self.gewicht < other.gewicht
class TGListe(object):
def __init__(self):
self.liste = []
def __str__(self):
output = "["
listLen = len(self.liste)
for i in range(listLen):
output += str(self.liste[i])
if i < listLen - 1:
output += ", "
output += "]"
return output
def __addChar(self, char: str):
if self.liste:
for item in self.liste:
if item.text == char:
item.gewicht += 1
return
# Maybe use desc sorting order?
self.liste.append(Textgewicht(char))
def __sort(self):
self.liste = sorted(self.liste)
"""
Analysiert eine Texteingabe und fügt Textgewichte für jeden Buchstaben in
@c liste hinzu.
@note Die Methode kann mehrmals aufgerufen werden, löscht dabei aber nicht
den bestehenden Datensatz.
@param input Eingabe, die analysiert werden soll.
"""
def analyze(self, input: str):
for char in input:
self.__addChar(char)
self.__sort()
def printUsage():
print("Usage: " + sys.argv[0] + " [input]")
if __name__ == "__main__":
print("Huffman-Kodierung")
if len(sys.argv) != 2:
usage()
printUsage()
exit(1)
buchstabensalat: list = []
for char in sys.argv[1]:
buchstabensalat.append(Textgewicht(char))
tgliste = TGListe()
tgliste.analyze(sys.argv[1])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment