Iluya hat geschrieben:Naja: Für selbstverständlich halten und das es selbstverständlich ist sind LEIDER zwei verschiedene Sachen... Für mich ist die Netiquette selbstverständlich und auch Interpunktion und Rechtschreibung haben in Foren Daseinsberechtigung. (natürlich nicht Bewerbungs-Perfekt). Hmm...merke grad das es OT wird
![Smile :)](./images/smilies/icon_e_smile.gif)
Das ist hier ebenfalls gewünscht.
Iluya hat geschrieben:Wie berechnest du denn dann für dein Array die jeweiligen Bitfolgen? Oder baust du dafür den Baum auf und speicherst dann die Werte in einem Array? Würde beim (De-)Codieren wahrscheinlich mächtig Zeit einsparen
![Idea :idea:](./images/smilies/icon_idea.gif)
Naja, es ist eigentlich nur ein halber Huffman, der sich in erster Linie daraus kennzeichnete, dass es nur zwei Bitmusterlängen gab: 7 und 14 Bit.
Aufgrund dieser Tatsache war es einfacher und schneller mit einem Array als Bäume aufzubauen.
Die Aufgabe war einen Algorithmus zu finden, der besser komprimiert als UUEncode oder Base64, ohne Binärdaten zu verwenden.
Damit brauche ich grundsätzlich 7-Bitzeichen. Wenn ich also einen 8 Bit-Zeichen speichern musste, bauchte ich ein Zielzeichen + 1 Bit benötigte. das Ziel war also nicht, auf möglichst kurze Bitfolgen zu kürzen, sondern zunächst eine Abbildung zu finden: ein Byte wird auf zwei Zielzeichen abgebildet, je ein Nibble auf einem Zielzeichen. Dabei werden von 128 Möglichkeiten des Zielzeichens 16 verbraten. Heißt: es bleiben 112 Zeichen über, die verschwendet werden. Abzüglich der Binärzeichen bleiben 80 über. Nun zähle ich die Zeichen und damit die Häufigkeit. Anschließend sortiere ich die Zeichen und weise den häufigen Zeichen eins von den 80 Einzelzeichen zu, so dass eine 1:1 Abbildung entsteht. Das entspricht dem Huffmann der statt einem binären Zahlensytem ein 128er Zahlensystem verwendet, wo die Frage ist, ob man zwei Ziffern braucht, oder mit einer auskommt.
Während base64 eine konstate Rate von 3:4 hat, kommt mein Algorithmus im Idealfall auf annähernd 1:1.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.