Thema: [C#] Huffman

  1. #1

    Registriert seit
    31.12.2012
    Beiträge
    117
    Thanked 237 Times in 71 Posts

    Standard [C#] Huffman

    Vielleicht braucht es ja jemand


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;


    namespace Knuddels.Network
    {
    class Huffman
    {
    private Dictionary<string, string> _tree;
    private StringBuilder _helper;


    // Knuddels Tree stand 12.05.2020
    public Huffman()
    : this(new string(new char[] { (char)8, (char)121, (char)239, (char)124, (char)47, (char)115, (char)101, (char)114, (char)118, (char)101, (char)114, (char)112, (char)112, (char)32, (char)34, (char)30, (char)116, (char)116, (char)9, (char)68, (char)33, (char)101, (char)97, (char)34, (char)117, (char)100, (char)15, (char)131, (char)17, (char)1079, (char)18, (char)218, (char)18, (char)222, (char)16, (char)8364, (char)15, (char)8254, (char)15, (char)133, (char)33, (char)252, (char)114, (char)12, (char)200, (char)53, (char)83, (char)116, (char)101, (char)53, (char)101, (char)99, (char)107, (char)31, (char)48, (char)54, (char)95, (char)77, (char)97, (char)102, (char)105, (char)97, (char)34, (char)54, (char)55, (char)34, (char)78, (char)73, (char)34, (char)108, (char)98, (char)34, (char)111, (char)117, (char)6, (char)35, (char)5, (char)10, (char)4, (char)176, (char)31, (char)115, (char)105, (char)52, (char)112, (char)108, (char)97, (char)31, (char)116, (char)105, (char)52, (char)102, (char)111, (char)114, (char)8, (char)12, (char)53, (char)98, (char)111, (char)121, (char)11, (char)13, (char)53, (char)109, (char)97, (char)110, (char)33, (char)75, (char)108, (char)34, (char)57, (char)55, (char)34, (char)117, (char)98, (char)53, (char)117, (char)114, (char)103, (char)53, (char)107, (char)116, (char)101, (char)32, (char)79, (char)75, (char)32, (char)117, (char)101, (char)8, (char)98, (char)32, (char)111, (char)112, (char)33, (char)101, (char)118, (char)33, (char)79, (char)98, (char)54, (char)112, (char)101, (char)114, (char)33, (char)75, (char)111, (char)32, (char)77, (char)111, (char)93, (char)95, (char)176, (char)62, (char)95, (char)104, (char)8, (char)109, (char)31, (char)100, (char)105, (char)31, (char)114, (char)97, (char)11, (char)106, (char)15, (char)130, (char)18, (char)970, (char)18, (char)217, (char)17, (char)198, (char)16, (char)353, (char)15, (char)185, (char)16, (char)9644, (char)17, (char)201, (char)17, (char)248, (char)34, (char)53, (char)51, (char)34, (char)108, (char)104, (char)14, (char)8226, (char)14, (char)96, (char)31, (char)112, (char)121, (char)30, (char)49, (char)51, (char)30, (char)110, (char)110, (char)7, (char)227, (char)32, (char)114, (char)99, (char)200, (char)95, (char)110, (char)105, (char)99, (char)107, (char)108, (char)105, (char)115, (char)116, (char)95, (char)32, (char)101, (char)102, (char)53, (char)98, (char)114, (char)97, (char)31, (char)101, (char)101, (char)53, (char)116, (char)101, (char)110, (char)32, (char)110, (char)99, (char)52, (char)63, (char)100, (char)61, (char)32, (char)87, (char)111, (char)34, (char)55, (char)55, (char)13, (char)250, (char)33, (char)57, (char)52, (char)52, (char)105, (char)110, (char)103, (char)11, (char)14, (char)32, (char)48, (char)50, (char)31, (char)68, (char)101, (char)31, (char)97, (char)117, (char)33, (char)82, (char)117, (char)34, (char)111, (char)121, (char)34, (char)107, (char)109, (char)53, (char)101, (char)105, (char)103, (char)32, (char)69, (char)115, (char)33, (char)107, (char)115, (char)33, (char)79, (char)108, (char)8, (char)53, (char)9, (char)69, (char)31, (char)105, (char)105, (char)11, (char)22, (char)34, (char)109, (char)102, (char)34, (char)70, (char)111, (char)34, (char)115, (char)107, (char)16, (char)178, (char)17, (char)9565, (char)17, (char)158, (char)18, (char)64380, (char)18, (char)65185, (char)18, (char)65190, (char)18, (char)8217, (char)17, (char)281, (char)18, (char)64398, (char)18, (char)65270, (char)14, (char)21, (char)32, (char)69, (char)114, (char)54, (char)117, (char)115, (char)101, (char)33, (char)79, (char)110, (char)32, (char)111, (char)108, (char)33, (char)56, (char)57, (char)34, (char)107, (char)246, (char)34, (char)90, (char)101, (char)52, (char)97, (char)114, (char)116, (char)31, (char)114, (char)105, (char)8, (char)119, (char)32, (char)99, (char)111, (char)14, (char)25, (char)14, (char)196, (char)34, (char)67, (char)116, (char)33, (char)118, (char)97, (char)31, (char)98, (char)105, (char)52, (char)108, (char)105, (char)110, (char)32, (char)104, (char)114, (char)32, (char)105, (char)100, (char)32, (char)100, (char)111, (char)32, (char)110, (char)107, (char)32, (char)120, (char)120, (char)34, (char)119, (char)98, (char)14, (char)24, (char)16, (char)1082, (char)16, (char)205, (char)15, (char)139, (char)34, (char)112, (char)104, (char)34, (char)102, (char)119, (char)53, (char)110, (char)111, (char)99, (char)32, (char)119, (char)101, (char)52, (char)121, (char)101, (char)114, (char)31, (char)102, (char)101, (char)32, (char)107, (char)111, (char)32, (char)104, (char)116, (char)31, (char)109, (char)105, (char)53, (char)49, (char)48, (char)48, (char)32, (char)51, (char)49, (char)7, (char)51, (char)7, (char)108, (char)10, (char)87, (char)31, (char)102, (char)99, (char)34, (char)107, (char)252, (char)15, (char)1074, (char)16, (char)249, (char)18, (char)1171, (char)18, (char)8482, (char)17, (char)1072, (char)14, (char)180, (char)33, (char)105, (char)122, (char)32, (char)48, (char)57, (char)31, (char)66, (char)78, (char)30, (char)105, (char)109, (char)9, (char)1, (char)50, (char)0, (char)112, (char)0, (char)33, (char)75, (char)114, (char)34, (char)79, (char)111, (char)34, (char)101, (char)103, (char)53, (char)80, (char)117, (char)110, (char)32, (char)121, (char)108, (char)32, (char)101, (char)104, (char)32, (char)82, (char)111, (char)32, (char)83, (char)117, (char)33, (char)120, (char)101, (char)54, (char)104, (char)101, (char)108, (char)53, (char)104, (char)108, (char)116, (char)31, (char)101, (char)116, (char)31, (char)115, (char)109, (char)10, (char)77, (char)32, (char)112, (char)97, (char)32, (char)51, (char)56, (char)9, (char)122, (char)33, (char)70, (char)108, (char)33, (char)52, (char)56, (char)32, (char)117, (char)102, (char)53, (char)75, (char)110, (char)117, (char)32, (char)78, (char)105, (char)32, (char)104, (char)105, (char)34, (char)108, (char)122, (char)13, (char)220, (char)54, (char)104, (char)101, (char)114, (char)32, (char)83, (char)111, (char)34, (char)83, (char)252, (char)34, (char)117, (char)104, (char)15, (char)8594, (char)15, (char)9617, (char)14, (char)1085, (char)34, (char)114, (char)252, (char)30, (char)70, (char)104, (char)52, (char)77, (char)105, (char)110, (char)31, (char)98, (char)97, (char)31, (char)112, (char)108, (char)94, (char)48, (char)44, (char)48, (char)44, (char)48, (char)30, (char)49, (char)55, (char)30, (char)32, (char)32, (char)53, (char)98, (char)105, (char)110, (char)33, (char)71, (char)108, (char)33, (char)78, (char)117, (char)115, (char)77, (char)97, (char)102, (char)105, (char)97, (char)50, (char)31, (char)100, (char)97, (char)33, (char)82, (char)104, (char)54, (char)107, (char)101, (char)110, (char)32, (char)83, (char)108, (char)10, (char)73, (char)137, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)32, (char)70, (char)98, (char)31, (char)66, (char)111, (char)33, (char)84, (char)111, (char)34, (char)122, (char)97, (char)16, (char)402, (char)17, (char)181, (char)17, (char)9619, (char)15, (char)134, (char)14, (char)1080, (char)33, (char)71, (char)111, (char)33, (char)53, (char)54, (char)53, (char)111, (char)105, (char)115, (char)32, (char)99, (char)101, (char)10, (char)78, (char)32, (char)48, (char)51, (char)33, (char)114, (char)98, (char)33, (char)104, (char)110, (char)53, (char)114, (char)105, (char)101, (char)33, (char)74, (char)101, (char)33, (char)68, (char)114, (char)8, (char)52, (char)53, (char)70, (char)117, (char)223, (char)33, (char)74, (char)117, (char)34, (char)110, (char)121, (char)34, (char)89, (char)111, (char)31, (char)51, (char)54, (char)53, (char)104, (char)101, (char)105, (char)34, (char)53, (char)56, (char)34, (char)111, (char)118, (char)12, (char)36, (char)31, (char)66, (char)66, (char)8, (char)38, (char)94, (char)66, (char)105, (char)110, (char)103, (char)111, (char)53, (char)108, (char)105, (char)101, (char)33, (char)98, (char)121, (char)33, (char)73, (char)103, (char)52, (char)115, (char)116, (char)101, (char)10, (char)17, (char)7, (char)50, (char)10, (char)71, (char)32, (char)105, (char)99, (char)54, (char)107, (char)108, (char)101, (char)18, (char)65275, (char)18, (char)1071, (char)17, (char)1106, (char)16, (char)224, (char)16, (char)1751, (char)18, (char)1077, (char)18, (char)193, (char)18, (char)213, (char)18, (char)9474, (char)17, (char)238, (char)17, (char)9556, (char)16, (char)127, (char)15, (char)214, (char)34, (char)54, (char)52, (char)31, (char)115, (char)101, (char)31, (char)50, (char)51, (char)31, (char)110, (char)103, (char)32, (char)119, (char)97, (char)33, (char)68, (char)252, (char)33, (char)102, (char)108, (char)31, (char)97, (char)114, (char)32, (char)114, (char)115, (char)32, (char)66, (char)105, (char)132, (char)0, (char)112, (char)0, (char)66, (char)0, (char)45, (char)0, (char)7, (char)245, (char)7, (char)44, (char)8, (char)194, (char)52, (char)117, (char)116, (char)101, (char)31, (char)118, (char)101, (char)10, (char)64, (char)33, (char)115, (char)108, (char)33, (char)97, (char)99, (char)32, (char)72, (char)101, (char)7, (char)66, (char)29, (char)50, (char)48, (char)32, (char)87, (char)105, (char)34, (char)99, (char)108, (char)34, (char)77, (char)246, (char)33, (char)100, (char)109, (char)31, (char)77, (char)97, (char)30, (char)108, (char)101, (char)7, (char)105, (char)32, (char)111, (char)116, (char)34, (char)115, (char)99, (char)34, (char)117, (char)117, (char)12, (char)9, (char)10, (char)83, (char)53, (char)103, (char)101, (char)98, (char)32, (char)77, (char)101, (char)255, (char)16, (char)11, (char)102, (char)101, (char)109, (char)97, (char)108, (char)101, (char)46, (char)98, (char)46, (char)109, (char)121, (char)95, (char)52, (char)46, (char)103, (char)105, (char)102, (char)32, (char)116, (char)108, (char)30, (char)49, (char)54, (char)52, (char)99, (char)104, (char)116, (char)34, (char)108, (char)228, (char)34, (char)112, (char)117, (char)34, (char)115, (char)98, (char)34, (char)53, (char)49, (char)53, (char)70, (char)105, (char)102, (char)32, (char)57, (char)48, (char)53, (char)101, (char)114, (char)104, (char)52, (char)50, (char)53, (char)53, (char)10, (char)75, (char)31, (char)105, (char)103, (char)8, (char)124, (char)30, (char)109, (char)97, (char)32, (char)50, (char)57, (char)34, (char)65, (char)109, (char)15, (char)9835, (char)16, (char)8250, (char)17, (char)157, (char)17, (char)160, (char)17, (char)254, (char)17, (char)8592, (char)17, (char)153, (char)17, (char)321, (char)15, (char)1084, (char)33, (char)75, (char)246, (char)53, (char)118, (char)111, (char)110, (char)32, (char)75, (char)105, (char)34, (char)228, (char)117, (char)34, (char)67, (char)101, (char)34, (char)55, (char)56, (char)34, (char)71, (char)105, (char)32, (char)110, (char)117, (char)52, (char)103, (char)101, (char)110, (char)32, (char)100, (char)117, (char)54, (char)77, (char)97, (char)114, (char)33, (char)114, (char)117, (char)33, (char)118, (char)111, (char)33, (char)106, (char)117, (char)13, (char)8467, (char)34, (char)98, (char)115, (char)54, (char)117, (char)104, (char)112, (char)219, (char)70, (char)111, (char)116, (char)111, (char)67, (char)111, (char)110, (char)116, (char)101, (char)115, (char)116, (char)32, (char)67, (char)112, (char)54, (char)116, (char)111, (char)114, (char)54, (char)114, (char)101, (char)97, (char)32, (char)122, (char)105, (char)74, (char)107, (char)97, (char)110, (char)110, (char)30, (char)108, (char)108, (char)9, (char)63, (char)8, (char)251, (char)8, (char)190, (char)32, (char)109, (char)112, (char)33, (char)108, (char)110, (char)54, (char)83, (char)112, (char)105, (char)31, (char)117, (char)115, (char)30, (char)115, (char)116, (char)33, (char)114, (char)102, (char)13, (char)6, (char)13, (char)143, (char)32, (char)102, (char)102, (char)32, (char)115, (char)104, (char)33, (char)52, (char)52, (char)33, (char)73, (char)99, (char)52, (char)104, (char)97, (char)116, (char)32, (char)106, (char)97, (char)54, (char)46, (char)119, (char)95, (char)12, (char)20, (char)8, (char)103, (char)32, (char)50, (char)55, (char)34, (char)65, (char)114, (char)13, (char)1108, (char)33, (char)252, (char)98, (char)31, (char)105, (char)101, (char)30, (char)49, (char)48, (char)54, (char)85, (char)110, (char)100, (char)54, (char)105, (char)101, (char)115, (char)33, (char)57, (char)49, (char)14, (char)182, (char)15, (char)233, (char)16, (char)216, (char)18, (char)331, (char)18, (char)9600, (char)17, (char)231, (char)34, (char)73, (char)73, (char)32, (char)103, (char)111, (char)33, (char)111, (char)98, (char)12, (char)39, (char)219, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)8, (char)120, (char)10, (char)91, (char)53, (char)110, (char)103, (char)101, (char)33, (char)108, (char)116, (char)34, (char)56, (char)56, (char)34, (char)90, (char)105, (char)32, (char)78, (char)97, (char)32, (char)70, (char)97, (char)10, (char)93, (char)8, (char)188, (char)10, (char)228, (char)53, (char)97, (char)117, (char)115, (char)74, (char)115, (char)105, (char)99, (char)104, (char)72, (char)105, (char)99, (char)111, (char)110, (char)9, (char)54, (char)12, (char)9608, (char)33, (char)71, (char)114, (char)32, (char)112, (char)111, (char)31, (char)51, (char)48, (char)7, (char)62, (char)52, (char)83, (char)99, (char)104, (char)54, (char)112, (char)97, (char)114, (char)33, (char)101, (char)121, (char)33, (char)71, (char)97, (char)54, (char)78, (char)111, (char)114, (char)93, (char)109, (char)97, (char)102, (char)105, (char)97, (char)30, (char)49, (char)50, (char)33, (char)74, (char)97, (char)33, (char)115, (char)252, (char)15, (char)184, (char)15, (char)138, (char)15, (char)27, (char)15, (char)135, (char)34, (char)246, (char)110, (char)54, (char)109, (char)97, (char)103, (char)52, (char)118, (char)101, (char)114, (char)32, (char)71, (char)101, (char)11, (char)164, (char)31, (char)50, (char)50, (char)33, (char)97, (char)103, (char)34, (char)55, (char)50, (char)14, (char)144, (char)15, (char)244, (char)15, (char)136, (char)53, (char)104, (char)97, (char)108, (char)31, (char)50, (char)49, (char)32, (char)114, (char)111, (char)33, (char)80, (char)115, (char)34, (char)53, (char)57, (char)34, (char)70, (char)117, (char)31, (char)108, (char)97, (char)32, (char)54, (char)48, (char)11, (char)80, (char)53, (char)83, (char)116, (char)117, (char)33, (char)109, (char)117, (char)34, (char)65, (char)97, (char)34, (char)54, (char)50, (char)7, (char)110, (char)7, (char)58, (char)32, (char)100, (char)116, (char)54, (char)79, (char)78, (char)76, (char)33, (char)57, (char)50, (char)94, (char)124, (char)47, (char)103, (char)111, (char)32, (char)136, (char)67, (char)104, (char)97, (char)110, (char)110, (char)101, (char)108, (char)53, (char)98, (char)101, (char)105, (char)32, (char)72, (char)105, (char)9, (char)2, (char)9, (char)56, (char)9, (char)102, (char)52, (char)50, (char)48, (char)48, (char)34, (char)102, (char)111, (char)34, (char)104, (char)109, (char)54, (char)114, (char)111, (char)115, (char)32, (char)103, (char)108, (char)8, (char)48, (char)33, (char)52, (char)57, (char)54, (char)101, (char)110, (char)115, (char)32, (char)51, (char)52, (char)54, (char)115, (char)119, (char)104, (char)33, (char)98, (char)116, (char)34, (char)72, (char)80, (char)18, (char)211, (char)18, (char)9618, (char)18, (char)199, (char)18, (char)209, (char)17, (char)8730, (char)17, (char)8595, (char)15, (char)226, (char)16, (char)177, (char)16, (char)926, (char)15, (char)132, (char)54, (char)66, (char)97, (char)100, (char)31, (char)101, (char)100, (char)12, (char)15, (char)54, (char)116, (char)100, (char)101, (char)74, (char)46, (char)112, (char)110, (char)103, (char)9, (char)100, (char)33, (char)109, (char)98, (char)33, (char)107, (char)110, (char)32, (char)68, (char)97, (char)32, (char)105, (char)114, (char)54, (char)71, (char)105, (char)114, (char)75, (char)50, (char)48, (char)48, (char)57, (char)29, (char)48, (char)48, (char)53, (char)80, (char)114, (char)105, (char)54, (char)66, (char)114, (char)101, (char)33, (char)84, (char)101, (char)34, (char)86, (char)101, (char)34, (char)53, (char)52, (char)33, (char)83, (char)104, (char)53, (char)87, (char)104, (char)111, (char)33, (char)102, (char)116, (char)33, (char)78, (char)101, (char)32, (char)88, (char)120, (char)94, (char)74, (char)97, (char)109, (char)101, (char)115, (char)32, (char)67, (char)108, (char)32, (char)109, (char)111, (char)54, (char)97, (char)110, (char)103, (char)12, (char)204, (char)33, (char)87, (char)117, (char)33, (char)48, (char)52, (char)9, (char)57, (char)74, (char)48, (char)48, (char)54, (char)53, (char)34, (char)67, (char)72, (char)34, (char)99, (char)105, (char)33, (char)103, (char)104, (char)31, (char)107, (char)101, (char)33, (char)117, (char)114, (char)33, (char)97, (char)107, (char)33, (char)105, (char)97, (char)33, (char)119, (char)117, (char)94, (char)112, (char)105, (char)99, (char)115, (char)47, (char)52, (char)100, (char)101, (char)110, (char)32, (char)76, (char)111, (char)53, (char)115, (char)116, (char)97, (char)34, (char)71, (char)66, (char)55, (char)115, (char)98, (char)117, (char)34, (char)111, (char)104, (char)34, (char)113, (char)117, (char)32, (char)83, (char)97, (char)31, (char)108, (char)105, (char)9, (char)97, (char)10, (char)79, (char)33, (char)70, (char)101, (char)34, (char)120, (char)121, (char)18, (char)163, (char)18, (char)1086, (char)17, (char)154, (char)16, (char)169, (char)17, (char)247, (char)17, (char)9559, (char)18, (char)9472, (char)18, (char)8220, (char)18, (char)173, (char)18, (char)189, (char)15, (char)171, (char)17, (char)9562, (char)18, (char)203, (char)18, (char)242, (char)17, (char)165, (char)17, (char)243, (char)74, (char)110, (char)105, (char)99, (char)104, (char)54, (char)98, (char)101, (char)115, (char)33, (char)116, (char)99, (char)12, (char)172, (char)12, (char)9829, (char)53, (char)109, (char)101, (char)110, (char)32, (char)83, (char)116, (char)52, (char)98, (char)117, (char)114, (char)31, (char)114, (char)116, (char)33, (char)57, (char)51, (char)33, (char)87, (char)97, (char)33, (char)84, (char)105, (char)33, (char)48, (char)55, (char)32, (char)103, (char)97, (char)33, (char)100, (char)115, (char)34, (char)57, (char)57, (char)34, (char)77, (char)117, (char)51, (char)115, (char)99, (char)104, (char)33, (char)74, (char)111, (char)54, (char)72, (char)101, (char)114, (char)34, (char)103, (char)103, (char)34, (char)118, (char)98, (char)33, (char)105, (char)98, (char)53, (char)101, (char)110, (char)116, (char)34, (char)56, (char)55, (char)34, (char)121, (char)97, (char)33, (char)108, (char)102, (char)32, (char)111, (char)114, (char)33, (char)101, (char)98, (char)33, (char)97, (char)119, (char)11, (char)18, (char)32, (char)116, (char)122, (char)29, (char)99, (char)104, (char)33, (char)114, (char)108, (char)159, (char)46, (char)115, (char)104, (char)97, (char)100, (char)111, (char)119, (char)95, (char)32, (char)115, (char)112, (char)33, (char)116, (char)111, (char)33, (char)111, (char)111, (char)11, (char)42, (char)30, (char)49, (char)53, (char)9, (char)111, (char)34, (char)110, (char)102, (char)34, (char)56, (char)54, (char)33, (char)57, (char)53, (char)54, (char)73, (char)78, (char)69, (char)33, (char)83, (char)105, (char)74, (char)70, (char)111, (char)116, (char)111, (char)33, (char)121, (char)115, (char)34, (char)57, (char)54, (char)15, (char)26, (char)15, (char)31, (char)15, (char)152, (char)16, (char)225, (char)17, (char)212, (char)18, (char)1111, (char)18, (char)236, (char)7, (char)114, (char)52, (char)105, (char)115, (char)116, (char)54, (char)76, (char)97, (char)100, (char)54, (char)77, (char)111, (char)109, (char)33, (char)84, (char)104, (char)54, (char)80, (char)114, (char)111, (char)32, (char)107, (char)97, (char)32, (char)67, (char)104, (char)31, (char)110, (char)105, (char)30, (char)115, (char)115, (char)73, (char)46, (char)109, (char)121, (char)95, (char)32, (char)118, (char)105, (char)54, (char)77, (char)111, (char)110, (char)33, (char)112, (char)105, (char)33, (char)81, (char)102, (char)34, (char)111, (char)99, (char)34, (char)115, (char)103, (char)34, (char)84, (char)97, (char)34, (char)116, (char)119, (char)34, (char)105, (char)102, (char)34, (char)122, (char)122, (char)31, (char)110, (char)97, (char)33, (char)65, (char)117, (char)33, (char)97, (char)105, (char)158, (char)75, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)10, (char)88, (char)71, (char)176, (char)62, (char)95, (char)104, (char)35, (char)117, (char)103, (char)35, (char)77, (char)121, (char)34, (char)80, (char)101, (char)34, (char)101, (char)120, (char)34, (char)78, (char)111, (char)32, (char)75, (char)97, (char)32, (char)110, (char)111, (char)34, (char)120, (char)116, (char)34, (char)104, (char)112, (char)34, (char)107, (char)114, (char)34, (char)80, (char)117, (char)30, (char)49, (char)56, (char)9, (char)82, (char)53, (char)83, (char)105, (char)110, (char)32, (char)65, (char)110, (char)34, (char)82, (char)105, (char)55, (char)115, (char)101, (char)108, (char)54, (char)98, (char)101, (char)97, (char)33, (char)86, (char)111, (char)34, (char)97, (char)104, (char)34, (char)81, (char)117, (char)7, (char)43, (char)10, (char)99, (char)33, (char)116, (char)115, (char)33, (char)84, (char)114, (char)32, (char)87, (char)101, (char)10, (char)76, (char)241, (char)105, (char)99, (char)111, (char)110, (char)95, (char)103, (char)101, (char)110, (char)100, (char)101, (char)114, (char)95, (char)31, (char)109, (char)101, (char)53, (char)46, (char)104, (char)95, (char)54, (char)119, (char)119, (char)119, (char)34, (char)121, (char)111, (char)34, (char)104, (char)117, (char)255, (char)12, (char)10, (char)124, (char)47, (char)102, (char)111, (char)116, (char)111, (char)119, (char)104, (char)111, (char)105, (char)115, (char)32, (char)34, (char)53, (char)109, (char)105, (char)116, (char)32, (char)115, (char)111, (char)8, (char)11, (char)52, (char)70, (char)114, (char)101, (char)54, (char)109, (char)97, (char)120, (char)54, (char)114, (char)101, (char)103, (char)33, (char)86, (char)97, (char)54, (char)119, (char)101, (char)114, (char)10, (char)117, (char)54, (char)119, (char)105, (char)101, (char)117, (char)105, (char)99, (char)111, (char)110, (char)115, (char)47, (char)33, (char)69, (char)110, (char)15, (char)9552, (char)16, (char)149, (char)16, (char)215, (char)14, (char)159, (char)34, (char)106, (char)111, (char)7, (char)37, (char)220, (char)50, (char)53, (char)53, (char)44, (char)50, (char)53, (char)53, (char)44, (char)50, (char)53, (char)53, (char)32, (char)101, (char)105, (char)33, (char)100, (char)114, (char)33, (char)105, (char)112, (char)32, (char)68, (char)117, (char)34, (char)107, (char)102, (char)34, (char)53, (char)55, (char)33, (char)80, (char)108, (char)31, (char)108, (char)111, (char)53, (char)83, (char)116, (char)97, (char)14, (char)945, (char)15, (char)29, (char)17, (char)964, (char)17, (char)210, (char)16, (char)145, (char)34, (char)69, (char)82, (char)33, (char)107, (char)117, (char)32, (char)108, (char)115, (char)54, (char)97, (char)99, (char)116, (char)33, (char)70, (char)114, (char)10, (char)92, (char)255, (char)19, (char)11, (char)102, (char)111, (char)116, (char)111, (char)115, (char)47, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)63, (char)110, (char)61, (char)11, (char)72, (char)50, (char)32, (char)32, (char)32, (char)33, (char)76, (char)117, (char)54, (char)100, (char)101, (char)109, (char)53, (char)101, (char)110, (char)100, (char)35, (char)66, (char)252, (char)35, (char)97, (char)112, (char)34, (char)55, (char)52, (char)54, (char)99, (char)104, (char)108, (char)53, (char)103, (char)108, (char)101, (char)30, (char)52, (char)48, (char)9, (char)33, (char)30, (char)51, (char)50, (char)52, (char)101, (char)105, (char)110, (char)53, (char)115, (char)101, (char)105, (char)33, (char)75, (char)101, (char)12, (char)223, (char)32, (char)102, (char)103, (char)53, (char)98, (char)97, (char)108, (char)31, (char)116, (char)97, (char)30, (char)49, (char)57, (char)52, (char)110, (char)100, (char)101, (char)54, (char)77, (char)101, (char)110, (char)54, (char)76, (char)105, (char)101, (char)32, (char)97, (char)100, (char)31, (char)83, (char)102, (char)10, (char)167, (char)30, (char)105, (char)110, (char)35, (char)101, (char)99, (char)15, (char)30, (char)16, (char)8249, (char)17, (char)221, (char)18, (char)166, (char)18, (char)234, (char)14, (char)953, (char)35, (char)72, (char)252, (char)33, (char)111, (char)115, (char)32, (char)114, (char)110, (char)74, (char)46, (char)109, (char)120, (char)95, (char)53, (char)119, (char)101, (char)105, (char)30, (char)46, (char)46, (char)54, (char)108, (char)101, (char)114, (char)33, (char)114, (char)107, (char)11, (char)113, (char)34, (char)116, (char)102, (char)34, (char)85, (char)110, (char)33, (char)80, (char)111, (char)53, (char)86, (char)101, (char)114, (char)9, (char)112, (char)7, (char)47, (char)12, (char)125, (char)35, (char)100, (char)119, (char)15, (char)1109, (char)16, (char)146, (char)16, (char)235, (char)34, (char)97, (char)122, (char)33, (char)108, (char)117, (char)33, (char)70, (char)105, (char)33, (char)107, (char)108, (char)33, (char)119, (char)111, (char)32, (char)56, (char)48, (char)255, (char)32, (char)9, (char)0, (char)112, (char)0, (char)66, (char)0, (char)112, (char)105, (char)99, (char)115, (char)47, (char)105, (char)99, (char)111, (char)110, (char)95, (char)102, (char)117, (char)108, (char)108, (char)67, (char)104, (char)97, (char)110, (char)110, (char)101, (char)108, (char)46, (char)103, (char)105, (char)102, (char)0, (char)45, (char)0, (char)30, (char)101, (char)108, (char)31, (char)116, (char)121, (char)54, (char)78, (char)101, (char)117, (char)34, (char)53, (char)50, (char)34, (char)108, (char)109, (char)32, (char)48, (char)49, (char)113, (char)124, (char)47, (char)119, (char)32, (char)34, (char)60, (char)180, (char)46, (char)113, (char)117, (char)97, (char)100, (char)99, (char)117, (char)116, (char)95, (char)35, (char)54, (char)57, (char)35, (char)100, (char)228, (char)34, (char)116, (char)117, (char)54, (char)102, (char)114, (char)101, (char)34, (char)105, (char)104, (char)35, (char)101, (char)122, (char)35, (char)57, (char)56, (char)31, (char)116, (char)101, (char)53, (char)103, (char)105, (char)114, (char)53, (char)99, (char)110, (char)116, (char)158, (char)46, (char)98, (char)111, (char)114, (char)100, (char)101, (char)114, (char)95, (char)32, (char)105, (char)116, (char)11, (char)89, (char)255, (char)14, (char)11, (char)102, (char)117, (char)108, (char)108, (char)67, (char)104, (char)97, (char)110, (char)110, (char)101, (char)108, (char)46, (char)103, (char)105, (char)102, (char)34, (char)122, (char)111, (char)34, (char)107, (char)99, (char)34, (char)65, (char)98, (char)15, (char)965, (char)18, (char)9642, (char)19, (char)9577, (char)19, (char)8494, (char)17, (char)202, (char)16, (char)141, (char)35, (char)56, (char)50, (char)32, (char)51, (char)51, (char)31, (char)110, (char)100, (char)10, (char)70, (char)32, (char)83, (char)112, (char)11, (char)94, (char)54, (char)97, (char)99, (char)104, (char)33, (char)117, (char)99, (char)32, (char)107, (char)105, (char)52, (char)105, (char)99, (char)104, (char)55, (char)102, (char)101, (char)108, (char)35, (char)56, (char)51, (char)15, (char)191, (char)15, (char)219, (char)33, (char)98, (char)114, (char)54, (char)70, (char)114, (char)105, (char)54, (char)100, (char)111, (char)114, (char)31, (char)100, (char)101, (char)31, (char)53, (char)48, (char)33, (char)97, (char)97, (char)34, (char)103, (char)98, (char)34, (char)108, (char)99, (char)54, (char)102, (char)252, (char)114, (char)33, (char)55, (char)53, (char)32, (char)116, (char)104, (char)53, (char)66, (char)101, (char)114, (char)54, (char)66, (char)97, (char)108, (char)33, (char)55, (char)48, (char)33, (char)52, (char)53, (char)34, (char)83, (char)119, (char)34, (char)52, (char)49, (char)32, (char)105, (char)108, (char)54, (char)104, (char)102, (char)108, (char)34, (char)73, (char)104, (char)13, (char)126, (char)255, (char)14, (char)10, (char)112, (char)105, (char)99, (char)115, (char)47, (char)102, (char)101, (char)109, (char)97, (char)108, (char)101, (char)46, (char)103, (char)105, (char)102, (char)53, (char)104, (char)116, (char)116, (char)16, (char)9834, (char)18, (char)161, (char)18, (char)232, (char)18, (char)305, (char)19, (char)8212, (char)62, (char)92, (char)92, (char)92, (char)20, (char)1241, (char)15, (char)183, (char)35, (char)65, (char)116, (char)35, (char)76, (char)69, (char)35, (char)83, (char)107, (char)75, (char)50, (char)48, (char)49, (char)48, (char)71, (char)46, (char)103, (char)105, (char)102, (char)74, (char)102, (char)111, (char)116, (char)111, (char)54, (char)76, (char)97, (char)110, (char)13, (char)19, (char)34, (char)105, (char)107, (char)199, (char)176, (char)62, (char)103, (char)116, (char)46, (char)103, (char)105, (char)102, (char)60, (char)176, (char)32, (char)72, (char)111, (char)34, (char)100, (char)121, (char)34, (char)80, (char)105, (char)54, (char)97, (char)108, (char)116, (char)32, (char)50, (char)56, (char)74, (char)46, (char)106, (char)112, (char)103, (char)7, (char)101, (char)8, (char)115, (char)32, (char)69, (char)108, (char)54, (char)109, (char)101, (char)114, (char)255, (char)14, (char)12, (char)109, (char)97, (char)108, (char)101, (char)46, (char)98, (char)46, (char)109, (char)121, (char)95, (char)51, (char)46, (char)103, (char)105, (char)102, (char)136, (char)0, (char)70, (char)108, (char)105, (char)114, (char)116, (char)32, (char)14, (char)1103, (char)35, (char)55, (char)54, (char)34, (char)110, (char)98, (char)33, (char)76, (char)97, (char)32, (char)110, (char)115, (char)33, (char)114, (char)103, (char)33, (char)48, (char)56, (char)32, (char)66, (char)101, (char)11, (char)118, (char)34, (char)109, (char)108, (char)35, (char)99, (char)100, (char)35, (char)55, (char)51, (char)33, (char)66, (char)117, (char)32, (char)116, (char)114, (char)32, (char)119, (char)105, (char)31, (char)109, (char)109, (char)33, (char)115, (char)102, (char)54, (char)68, (char)105, (char)101, (char)32, (char)110, (char)116, (char)32, (char)108, (char)121, (char)33, (char)101, (char)109, (char)54, (char)116, (char)109, (char)117, (char)34, (char)111, (char)100, (char)34, (char)115, (char)100, (char)54, (char)75, (char)105, (char)115, (char)34, (char)68, (char)68, (char)16, (char)151, (char)17, (char)168, (char)17, (char)206, (char)15, (char)951, (char)35, (char)54, (char)56, (char)12, (char)81, (char)31, (char)103, (char)101, (char)35, (char)56, (char)52, (char)35, (char)70, (char)67, (char)34, (char)103, (char)115, (char)33, (char)82, (char)97, (char)33, (char)115, (char)117, (char)34, (char)105, (char)118, (char)35, (char)104, (char)104, (char)35, (char)80, (char)114, (char)7, (char)60, (char)31, (char)104, (char)97, (char)31, (char)111, (char)110, (char)10, (char)84, (char)52, (char)99, (char)104, (char)101, (char)8, (char)104, (char)7, (char)34, (char)255, (char)13, (char)12, (char)99, (char)108, (char)111, (char)117, (char)100, (char)115, (char)98, (char)108, (char)117, (char)101, (char)46, (char)103, (char)105, (char)102, (char)34, (char)67, (char)105, (char)13, (char)3, (char)55, (char)108, (char)105, (char)103, (char)14, (char)23, (char)16, (char)142, (char)16, (char)150, (char)18, (char)241, (char)18, (char)253, (char)18, (char)174, (char)18, (char)1091, (char)19, (char)942, (char)19, (char)304, (char)19, (char)322, (char)19, (char)324, (char)17, (char)961, (char)33, (char)98, (char)98, (char)53, (char)98, (char)101, (char)114, (char)32, (char)76, (char)105, (char)33, (char)68, (char)105, (char)13, (char)175, (char)34, (char)108, (char)103, (char)33, (char)65, (char)108, (char)54, (char)79, (char)117, (char)116, (char)32, (char)50, (char)52, (char)32, (char)117, (char)110, (char)32, (char)51, (char)57, (char)55, (char)117, (char)114, (char)116, (char)35, (char)73, (char)115, (char)35, (char)82, (char)102, (char)33, (char)55, (char)49, (char)33, (char)104, (char)108, (char)33, (char)66, (char)108, (char)32, (char)66, (char)97, (char)53, (char)101, (char)97, (char)114, (char)54, (char)101, (char)99, (char)104, (char)34, (char)85, (char)115, (char)34, (char)52, (char)55, (char)54, (char)105, (char)112, (char)105, (char)12, (char)59, (char)32, (char)122, (char)101, (char)7, (char)46, (char)9, (char)55, (char)31, (char)97, (char)116, (char)34, (char)119, (char)228, (char)35, (char)72, (char)117, (char)15, (char)8706, (char)16, (char)186, (char)17, (char)240, (char)17, (char)65273, (char)33, (char)223, (char)101, (char)33, (char)117, (char)116, (char)33, (char)102, (char)117, (char)73, (char)62, (char)45, (char)45, (char)60, (char)31, (char)97, (char)110, (char)32, (char)76, (char)101, (char)32, (char)115, (char)97, (char)13, (char)4, (char)34, (char)103, (char)116, (char)33, (char)106, (char)101, (char)53, (char)112, (char)119, (char)100, (char)32, (char)82, (char)101, (char)32, (char)104, (char)101, (char)32, (char)104, (char)111, (char)34, (char)111, (char)109, (char)34, (char)111, (char)107, (char)33, (char)53, (char)53, (char)52, (char)119, (char)97, (char)114, (char)53, (char)104, (char)101, (char)110, (char)34, (char)112, (char)101, (char)35, (char)101, (char)107, (char)35, (char)76, (char)76, (char)33, (char)98, (char)117, (char)31, (char)114, (char)101, (char)34, (char)119, (char)252, (char)34, (char)54, (char)54, (char)33, (char)83, (char)101, (char)11, (char)90, (char)33, (char)252, (char)99, (char)34, (char)67, (char)114, (char)34, (char)103, (char)117, (char)32, (char)122, (char)117, (char)12, (char)74, (char)34, (char)109, (char)228, (char)34, (char)52, (char)50, (char)33, (char)98, (char)111, (char)33, (char)67, (char)97, (char)31, (char)101, (char)115, (char)54, (char)84, (char)97, (char)103, (char)35, (char)82, (char)82, (char)35, (char)114, (char)121, (char)13, (char)5, (char)32, (char)50, (char)54, (char)34, (char)114, (char)114, (char)34, (char)111, (char)102, (char)54, (char)68, (char)111, (char)114, (char)53, (char)114, (char)101, (char)115, (char)53, (char)99, (char)103, (char)105, (char)33, (char)100, (char)100, (char)255, (char)57, (char)12, (char)124, (char)104, (char)116, (char)116, (char)112, (char)58, (char)47, (char)47, (char)119, (char)119, (char)119, (char)51, (char)46, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)58, (char)56, (char)48, (char)56, (char)48, (char)47, (char)116, (char)120, (char)116, (char)108, (char)47, (char)99, (char)108, (char)105, (char)99, (char)107, (char)63, (char)100, (char)61, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)38, (char)105, (char)100, (char)61, (char)33, (char)83, (char)109, (char)34, (char)52, (char)51, (char)34, (char)97, (char)102, (char)53, (char)105, (char)110, (char)101, (char)33, (char)67, (char)111, (char)18, (char)170, (char)18, (char)179, (char)17, (char)931, (char)16, (char)137, (char)15, (char)187, (char)35, (char)67, (char)69, (char)34, (char)108, (char)107, (char)32, (char)97, (char)109, (char)32, (char)112, (char)112, (char)33, (char)115, (char)119, (char)35, (char)54, (char)51, (char)35, (char)109, (char)121, (char)35, (char)112, (char)102, (char)17, (char)156, (char)17, (char)230, (char)16, (char)140, (char)15, (char)28, (char)54, (char)102, (char)104, (char)101, (char)13, (char)8, (char)34, (char)86, (char)105, (char)53, (char)116, (char)101, (char)114, (char)10, (char)255, (char)31, (char)49, (char)49, (char)33, (char)102, (char)97, (char)35, (char)115, (char)114, (char)35, (char)77, (char)102, (char)13, (char)16, (char)96, (char)176, (char)62, (char)115, (char)109, (char)95, (char)54, (char)65, (char)110, (char)122, (char)10, (char)65, (char)32, (char)97, (char)115, (char)35, (char)78, (char)82, (char)35, (char)108, (char)114, (char)35, (char)78, (char)84, (char)35, (char)54, (char)49, (char)33, (char)110, (char)122, (char)33, (char)97, (char)98, (char)33, (char)103, (char)105, (char)54, (char)100, (char)112, (char)103, (char)33, (char)103, (char)114, (char)9, (char)40, (char)255, (char)12, (char)10, (char)112, (char)105, (char)99, (char)115, (char)47, (char)109, (char)97, (char)108, (char)101, (char)46, (char)103, (char)105, (char)102, (char)32, (char)112, (char)103, (char)35, (char)67, (char)117, (char)19, (char)948, (char)19, (char)962, (char)19, (char)1754, (char)19, (char)8596, (char)18, (char)1110, (char)18, (char)9658, (char)17, (char)1750, (char)19, (char)273, (char)19, (char)295, (char)19, (char)423, (char)19, (char)1753, (char)18, (char)957, (char)18, (char)1089, (char)17, (char)207, (char)17, (char)237, (char)18, (char)9679, (char)18, (char)8221, (char)34, (char)79, (char)115, (char)33, (char)111, (char)119, (char)31, (char)99, (char)107, (char)11, (char)229, (char)32, (char)72, (char)97, (char)35, (char)103, (char)100, (char)35, (char)73, (char)116, (char)34, (char)107, (char)116, (char)54, (char)108, (char)101, (char)110, (char)33, (char)69, (char)105, (char)13, (char)7, (char)34, (char)102, (char)114, (char)10, (char)67, (char)9, (char)41, (char)54, (char)109, (char)105, (char)110, (char)54, (char)83, (char)105, (char)101, (char)12, (char)123, (char)34, (char)54, (char)53, (char)34, (char)77, (char)252, (char)11, (char)246, (char)35, (char)78, (char)252, (char)35, (char)68, (char)111, (char)34, (char)105, (char)111, (char)33, (char)80, (char)102, (char)54, (char)100, (char)97, (char)115, (char)12, (char)86, (char)95, (char)70, (char)108, (char)105, (char)114, (char)116, (char)11, (char)252, (char)34, (char)114, (char)122, (char)35, (char)71, (char)117, (char)35, (char)102, (char)109, (char)54, (char)72, (char)97, (char)109, (char)8, (char)116, (char)29, (char)101, (char)110, (char)29, (char)101, (char)114, (char)4, (char)0, (char)52, (char)100, (char)101, (char)114, (char)33, (char)67, (char)99, (char)54, (char)65, (char)108, (char)116, (char)53, (char)77, (char)105, (char)120, (char)35, (char)65, (char)115, (char)35, (char)116, (char)112, (char)55, (char)110, (char)101, (char)110, (char)33, (char)108, (char)100, (char)32, (char)48, (char)53, (char)31, (char)105, (char)115, (char)11, (char)195, (char)34, (char)76, (char)252, (char)15, (char)1752, (char)15, (char)1761, (char)15, (char)1762, (char)15, (char)162, (char)54, (char)71, (char)101, (char)115, (char)54, (char)97, (char)117, (char)102, (char)54, (char)97, (char)110, (char)100, (char)54, (char)98, (char)108, (char)103, (char)33, (char)112, (char)114, (char)52, (char)117, (char)110, (char)100, (char)31, (char)97, (char)108, (char)34, (char)73, (char)110, (char)34, (char)87, (char)252, (char)54, (char)104, (char)105, (char)101, (char)54, (char)103, (char)101, (char)115, (char)34, (char)246, (char)223, (char)34, (char)112, (char)115, (char)31, (char)98, (char)101, (char)32, (char)50, (char)53, (char)54, (char)49, (char)52, (char)48, (char)35, (char)104, (char)115, (char)16, (char)969, (char)16, (char)239, (char)16, (char)147, (char)16, (char)963, (char)34, (char)52, (char)54, (char)10, (char)128, (char)31, (char)49, (char)52, (char)32, (char)51, (char)53, (char)33, (char)69, (char)109, (char)54, (char)103, (char)101, (char)114, (char)31, (char)99, (char)103, (char)10, (char)107, (char)6, (char)45, (char)34, (char)119, (char)104, (char)35, (char)114, (char)112, (char)17, (char)148, (char)18, (char)923, (char)18, (char)155, (char)16, (char)9553, (char)16, (char)129, (char)17, (char)208, (char)19, (char)287, (char)19, (char)399, (char)19, (char)9632, (char)19, (char)9668, (char)33, (char)80, (char)97, (char)11, (char)85, (char)32, (char)98, (char)108, (char)33, (char)99, (char)97, (char)54, (char)118, (char)97, (char)116, (char)33, (char)51, (char)55, (char)34, (char)101, (char)117, (char)34, (char)109, (char)115, (char)33, (char)77, (char)105, (char)33, (char)99, (char)115, (char)53, (char)100, (char)105, (char)101, (char)33, (char)97, (char)121, (char)33, (char)102, (char)105, (char)10, (char)192, (char)32, (char)117, (char)109, (char)53, (char)115, (char)101, (char)110, (char)9, (char)61, (char)33, (char)66, (char)114, (char)34, (char)117, (char)108, (char)34, (char)102, (char)121, (char)53, (char)118, (char)111, (char)114, (char)33, (char)87, (char)108, (char)54, (char)116, (char)115, (char)99, (char)32, (char)114, (char)100, (char)31, (char)110, (char)101, (char)34, (char)75, (char)117, (char)15, (char)949, (char)15, (char)1090, (char)35, (char)82, (char)252, (char)54, (char)80, (char)97, (char)114, (char)35, (char)56, (char)53, (char)35, (char)119, (char)99, (char)34, (char)99, (char)114, (char)33, (char)114, (char)109, (char)8, (char)49, (char)6, (char)95, (char)4, (char)32 }))
    {


    }
    public Huffman(string pTree)
    {
    this._tree = new Dictionary<string, string>();
    this._helper = new StringBuilder();


    #region Create Tree


    int pathIndex = 1;
    int treeDepth = -33;
    int strLength;
    for (int index = 0; index < pTree.Length; index += strLength + 1)
    {
    int c = (int)pTree[index];
    int pathLength;
    if (c == 255)
    {
    strLength = (int)pTree[index + 1] + 1;
    pathLength = (int)pTree[index + 2];
    index += 2;
    }
    else
    {
    strLength = c / 21 + 1;
    pathLength = c % 21;
    }
    if ((pathIndex & 1) == 0)
    {
    ++pathIndex;
    for (; treeDepth < pathLength; ++treeDepth)
    pathIndex <<= 1;
    }
    else
    {
    do
    {
    pathIndex >>= 1;
    --treeDepth;
    }
    while ((pathIndex & 1) == 1);
    ++pathIndex;
    for (; treeDepth < pathLength; ++treeDepth)
    pathIndex <<= 1;
    }


    int path = this.CalcPath(pathIndex, pathLength);
    string value = pTree.Substring(index + 1, strLength);


    #region Add to Tree


    _helper.Clear();
    do
    {
    _helper.Append(path & 1);


    path >>= 1;
    pathLength--;
    } while (pathLength != 0);


    _helper.Append("1");
    if (_tree.ContainsKey(_helper.ToString()))
    throw new Exception("Error constructing tree: " + value);


    _tree.Add(_helper.ToString(), value);


    #endregion
    }


    #endregion
    }


    public string Decompress(byte[] pBuffer)
    {
    if (pBuffer == null)
    return null;


    _helper.Clear();
    var buffer = new StringBuilder();


    bool end = false;
    int index = 0;
    int depth = 0;


    while (!end)
    {
    _helper.Append(GetNodeIndex(pBuffer, ref index, ref depth, ref end));
    _helper.Append("1");


    if (_tree.ContainsKey(_helper.ToString()))
    {
    var value = _tree[_helper.ToString()];
    if (value == "\\\\\\")
    {
    var charCounter = 0;
    for (int j = 0; j < 16; j++)
    {
    charCounter += (GetNodeIndex(pBuffer, ref index, ref depth, ref end) << j);
    }
    buffer.Append((char)charCounter);
    }
    else
    {
    buffer.Append(value);
    }
    _helper.Clear();
    }
    else
    {
    _helper.Remove(_helper.Length - 1, 1);
    }
    }


    return buffer.ToString();
    }
    public byte[] Compress(string pString)
    {
    if (pString == null)
    pString = string.Empty;


    var bitBuffer = new StringBuilder();
    _helper.Clear();
    for (var i = 0; i < pString.Length; i++)
    {
    _helper.Append(pString[i]);
    if (_tree.ContainsValue(_helper.ToString()))
    {
    foreach (var pair in _tree)
    {
    if (pair.Value != _helper.ToString())
    continue;


    bitBuffer.Append(pair.Key.Substring(0, pair.Key.Length - 1));
    _helper.Clear();
    break;
    }
    }
    }


    var bits = new string(bitBuffer.ToString().Reverse().ToArray());
    var buffer = new List<byte>();


    for (int index = bits.Length; index > 0;)
    {
    buffer.Add((byte)Convert.ToInt32(
    bits.Substring(
    index - 8 < 0 ? 0 : index - 8,
    index < 8 ? index : 8
    ),
    2
    ));


    index -= index < 8 ? index : 8;
    }
    return buffer.ToArray();
    }


    private int GetNodeIndex(byte[] buffer, ref int index, ref int depth, ref bool end)
    {
    int num = 0;
    if (((int)buffer[index] & 1 << depth) != 0)
    num = 1;
    depth++;
    if (depth > 7)
    {
    depth = 0;
    index++;
    end = index == buffer.Length;
    }
    return num;
    }
    private int CalcPath(int index, int pathLength)
    {
    int count = 0;
    int shiftHelper = 1;
    int shiftCounter = 1 << pathLength - 1;
    for (; pathLength > 0; --pathLength)
    {
    if ((index & shiftHelper) != 0)
    count += shiftCounter;
    shiftHelper <<= 1;
    shiftCounter >>= 1;
    }
    return count;
    }
    }
    }
    Geändert von Darkfield (22.05.2020 um 05:21 Uhr)

  2. The Following User Says Thank You to SeBi For This Useful Post:

    Bubble Gum (13.05.2020)

  3. #2

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: [C#] Huffman

    Habe es schon über GitHub verfolgen können, vielen Dank!

  4. #3

    Registriert seit
    31.12.2012
    Beiträge
    117
    Thanked 237 Times in 71 Posts

    Standard [C#] Huffman Update

    UPDATE: 16Bit kompression hibzugefügt, hatte ich offenbar vergessen

    Kann ja ein Mod editieren

    Edit: Alle längen stimmen jetzt


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Knuddels.Network
    {
    public class Huffman
    {
    private readonly Dictionary<string, string> _tree;
    private string _16BitCharIndicator;
    private StringBuilder _helper;

    #region Konstruktor | Create Tree

    // Knuddels Tree stand 12.05.2020 - k90cab
    public Huffman()
    : this(new string(new char[] { (char)8, (char)121, (char)239, (char)124, (char)47, (char)115, (char)101, (char)114, (char)118, (char)101, (char)114, (char)112, (char)112, (char)32, (char)34, (char)30, (char)116, (char)116, (char)9, (char)68, (char)33, (char)101, (char)97, (char)34, (char)117, (char)100, (char)15, (char)131, (char)17, (char)1079, (char)18, (char)218, (char)18, (char)222, (char)16, (char)8364, (char)15, (char)8254, (char)15, (char)133, (char)33, (char)252, (char)114, (char)12, (char)200, (char)53, (char)83, (char)116, (char)101, (char)53, (char)101, (char)99, (char)107, (char)31, (char)48, (char)54, (char)95, (char)77, (char)97, (char)102, (char)105, (char)97, (char)34, (char)54, (char)55, (char)34, (char)78, (char)73, (char)34, (char)108, (char)98, (char)34, (char)111, (char)117, (char)6, (char)35, (char)5, (char)10, (char)4, (char)176, (char)31, (char)115, (char)105, (char)52, (char)112, (char)108, (char)97, (char)31, (char)116, (char)105, (char)52, (char)102, (char)111, (char)114, (char)8, (char)12, (char)53, (char)98, (char)111, (char)121, (char)11, (char)13, (char)53, (char)109, (char)97, (char)110, (char)33, (char)75, (char)108, (char)34, (char)57, (char)55, (char)34, (char)117, (char)98, (char)53, (char)117, (char)114, (char)103, (char)53, (char)107, (char)116, (char)101, (char)32, (char)79, (char)75, (char)32, (char)117, (char)101, (char)8, (char)98, (char)32, (char)111, (char)112, (char)33, (char)101, (char)118, (char)33, (char)79, (char)98, (char)54, (char)112, (char)101, (char)114, (char)33, (char)75, (char)111, (char)32, (char)77, (char)111, (char)93, (char)95, (char)176, (char)62, (char)95, (char)104, (char)8, (char)109, (char)31, (char)100, (char)105, (char)31, (char)114, (char)97, (char)11, (char)106, (char)15, (char)130, (char)18, (char)970, (char)18, (char)217, (char)17, (char)198, (char)16, (char)353, (char)15, (char)185, (char)16, (char)9644, (char)17, (char)201, (char)17, (char)248, (char)34, (char)53, (char)51, (char)34, (char)108, (char)104, (char)14, (char)8226, (char)14, (char)96, (char)31, (char)112, (char)121, (char)30, (char)49, (char)51, (char)30, (char)110, (char)110, (char)7, (char)227, (char)32, (char)114, (char)99, (char)200, (char)95, (char)110, (char)105, (char)99, (char)107, (char)108, (char)105, (char)115, (char)116, (char)95, (char)32, (char)101, (char)102, (char)53, (char)98, (char)114, (char)97, (char)31, (char)101, (char)101, (char)53, (char)116, (char)101, (char)110, (char)32, (char)110, (char)99, (char)52, (char)63, (char)100, (char)61, (char)32, (char)87, (char)111, (char)34, (char)55, (char)55, (char)13, (char)250, (char)33, (char)57, (char)52, (char)52, (char)105, (char)110, (char)103, (char)11, (char)14, (char)32, (char)48, (char)50, (char)31, (char)68, (char)101, (char)31, (char)97, (char)117, (char)33, (char)82, (char)117, (char)34, (char)111, (char)121, (char)34, (char)107, (char)109, (char)53, (char)101, (char)105, (char)103, (char)32, (char)69, (char)115, (char)33, (char)107, (char)115, (char)33, (char)79, (char)108, (char)8, (char)53, (char)9, (char)69, (char)31, (char)105, (char)105, (char)11, (char)22, (char)34, (char)109, (char)102, (char)34, (char)70, (char)111, (char)34, (char)115, (char)107, (char)16, (char)178, (char)17, (char)9565, (char)17, (char)158, (char)18, (char)64380, (char)18, (char)65185, (char)18, (char)65190, (char)18, (char)8217, (char)17, (char)281, (char)18, (char)64398, (char)18, (char)65270, (char)14, (char)21, (char)32, (char)69, (char)114, (char)54, (char)117, (char)115, (char)101, (char)33, (char)79, (char)110, (char)32, (char)111, (char)108, (char)33, (char)56, (char)57, (char)34, (char)107, (char)246, (char)34, (char)90, (char)101, (char)52, (char)97, (char)114, (char)116, (char)31, (char)114, (char)105, (char)8, (char)119, (char)32, (char)99, (char)111, (char)14, (char)25, (char)14, (char)196, (char)34, (char)67, (char)116, (char)33, (char)118, (char)97, (char)31, (char)98, (char)105, (char)52, (char)108, (char)105, (char)110, (char)32, (char)104, (char)114, (char)32, (char)105, (char)100, (char)32, (char)100, (char)111, (char)32, (char)110, (char)107, (char)32, (char)120, (char)120, (char)34, (char)119, (char)98, (char)14, (char)24, (char)16, (char)1082, (char)16, (char)205, (char)15, (char)139, (char)34, (char)112, (char)104, (char)34, (char)102, (char)119, (char)53, (char)110, (char)111, (char)99, (char)32, (char)119, (char)101, (char)52, (char)121, (char)101, (char)114, (char)31, (char)102, (char)101, (char)32, (char)107, (char)111, (char)32, (char)104, (char)116, (char)31, (char)109, (char)105, (char)53, (char)49, (char)48, (char)48, (char)32, (char)51, (char)49, (char)7, (char)51, (char)7, (char)108, (char)10, (char)87, (char)31, (char)102, (char)99, (char)34, (char)107, (char)252, (char)15, (char)1074, (char)16, (char)249, (char)18, (char)1171, (char)18, (char)8482, (char)17, (char)1072, (char)14, (char)180, (char)33, (char)105, (char)122, (char)32, (char)48, (char)57, (char)31, (char)66, (char)78, (char)30, (char)105, (char)109, (char)9, (char)1, (char)50, (char)0, (char)112, (char)0, (char)33, (char)75, (char)114, (char)34, (char)79, (char)111, (char)34, (char)101, (char)103, (char)53, (char)80, (char)117, (char)110, (char)32, (char)121, (char)108, (char)32, (char)101, (char)104, (char)32, (char)82, (char)111, (char)32, (char)83, (char)117, (char)33, (char)120, (char)101, (char)54, (char)104, (char)101, (char)108, (char)53, (char)104, (char)108, (char)116, (char)31, (char)101, (char)116, (char)31, (char)115, (char)109, (char)10, (char)77, (char)32, (char)112, (char)97, (char)32, (char)51, (char)56, (char)9, (char)122, (char)33, (char)70, (char)108, (char)33, (char)52, (char)56, (char)32, (char)117, (char)102, (char)53, (char)75, (char)110, (char)117, (char)32, (char)78, (char)105, (char)32, (char)104, (char)105, (char)34, (char)108, (char)122, (char)13, (char)220, (char)54, (char)104, (char)101, (char)114, (char)32, (char)83, (char)111, (char)34, (char)83, (char)252, (char)34, (char)117, (char)104, (char)15, (char)8594, (char)15, (char)9617, (char)14, (char)1085, (char)34, (char)114, (char)252, (char)30, (char)70, (char)104, (char)52, (char)77, (char)105, (char)110, (char)31, (char)98, (char)97, (char)31, (char)112, (char)108, (char)94, (char)48, (char)44, (char)48, (char)44, (char)48, (char)30, (char)49, (char)55, (char)30, (char)32, (char)32, (char)53, (char)98, (char)105, (char)110, (char)33, (char)71, (char)108, (char)33, (char)78, (char)117, (char)115, (char)77, (char)97, (char)102, (char)105, (char)97, (char)50, (char)31, (char)100, (char)97, (char)33, (char)82, (char)104, (char)54, (char)107, (char)101, (char)110, (char)32, (char)83, (char)108, (char)10, (char)73, (char)137, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)32, (char)70, (char)98, (char)31, (char)66, (char)111, (char)33, (char)84, (char)111, (char)34, (char)122, (char)97, (char)16, (char)402, (char)17, (char)181, (char)17, (char)9619, (char)15, (char)134, (char)14, (char)1080, (char)33, (char)71, (char)111, (char)33, (char)53, (char)54, (char)53, (char)111, (char)105, (char)115, (char)32, (char)99, (char)101, (char)10, (char)78, (char)32, (char)48, (char)51, (char)33, (char)114, (char)98, (char)33, (char)104, (char)110, (char)53, (char)114, (char)105, (char)101, (char)33, (char)74, (char)101, (char)33, (char)68, (char)114, (char)8, (char)52, (char)53, (char)70, (char)117, (char)223, (char)33, (char)74, (char)117, (char)34, (char)110, (char)121, (char)34, (char)89, (char)111, (char)31, (char)51, (char)54, (char)53, (char)104, (char)101, (char)105, (char)34, (char)53, (char)56, (char)34, (char)111, (char)118, (char)12, (char)36, (char)31, (char)66, (char)66, (char)8, (char)38, (char)94, (char)66, (char)105, (char)110, (char)103, (char)111, (char)53, (char)108, (char)105, (char)101, (char)33, (char)98, (char)121, (char)33, (char)73, (char)103, (char)52, (char)115, (char)116, (char)101, (char)10, (char)17, (char)7, (char)50, (char)10, (char)71, (char)32, (char)105, (char)99, (char)54, (char)107, (char)108, (char)101, (char)18, (char)65275, (char)18, (char)1071, (char)17, (char)1106, (char)16, (char)224, (char)16, (char)1751, (char)18, (char)1077, (char)18, (char)193, (char)18, (char)213, (char)18, (char)9474, (char)17, (char)238, (char)17, (char)9556, (char)16, (char)127, (char)15, (char)214, (char)34, (char)54, (char)52, (char)31, (char)115, (char)101, (char)31, (char)50, (char)51, (char)31, (char)110, (char)103, (char)32, (char)119, (char)97, (char)33, (char)68, (char)252, (char)33, (char)102, (char)108, (char)31, (char)97, (char)114, (char)32, (char)114, (char)115, (char)32, (char)66, (char)105, (char)132, (char)0, (char)112, (char)0, (char)66, (char)0, (char)45, (char)0, (char)7, (char)245, (char)7, (char)44, (char)8, (char)194, (char)52, (char)117, (char)116, (char)101, (char)31, (char)118, (char)101, (char)10, (char)64, (char)33, (char)115, (char)108, (char)33, (char)97, (char)99, (char)32, (char)72, (char)101, (char)7, (char)66, (char)29, (char)50, (char)48, (char)32, (char)87, (char)105, (char)34, (char)99, (char)108, (char)34, (char)77, (char)246, (char)33, (char)100, (char)109, (char)31, (char)77, (char)97, (char)30, (char)108, (char)101, (char)7, (char)105, (char)32, (char)111, (char)116, (char)34, (char)115, (char)99, (char)34, (char)117, (char)117, (char)12, (char)9, (char)10, (char)83, (char)53, (char)103, (char)101, (char)98, (char)32, (char)77, (char)101, (char)255, (char)16, (char)11, (char)102, (char)101, (char)109, (char)97, (char)108, (char)101, (char)46, (char)98, (char)46, (char)109, (char)121, (char)95, (char)52, (char)46, (char)103, (char)105, (char)102, (char)32, (char)116, (char)108, (char)30, (char)49, (char)54, (char)52, (char)99, (char)104, (char)116, (char)34, (char)108, (char)228, (char)34, (char)112, (char)117, (char)34, (char)115, (char)98, (char)34, (char)53, (char)49, (char)53, (char)70, (char)105, (char)102, (char)32, (char)57, (char)48, (char)53, (char)101, (char)114, (char)104, (char)52, (char)50, (char)53, (char)53, (char)10, (char)75, (char)31, (char)105, (char)103, (char)8, (char)124, (char)30, (char)109, (char)97, (char)32, (char)50, (char)57, (char)34, (char)65, (char)109, (char)15, (char)9835, (char)16, (char)8250, (char)17, (char)157, (char)17, (char)160, (char)17, (char)254, (char)17, (char)8592, (char)17, (char)153, (char)17, (char)321, (char)15, (char)1084, (char)33, (char)75, (char)246, (char)53, (char)118, (char)111, (char)110, (char)32, (char)75, (char)105, (char)34, (char)228, (char)117, (char)34, (char)67, (char)101, (char)34, (char)55, (char)56, (char)34, (char)71, (char)105, (char)32, (char)110, (char)117, (char)52, (char)103, (char)101, (char)110, (char)32, (char)100, (char)117, (char)54, (char)77, (char)97, (char)114, (char)33, (char)114, (char)117, (char)33, (char)118, (char)111, (char)33, (char)106, (char)117, (char)13, (char)8467, (char)34, (char)98, (char)115, (char)54, (char)117, (char)104, (char)112, (char)219, (char)70, (char)111, (char)116, (char)111, (char)67, (char)111, (char)110, (char)116, (char)101, (char)115, (char)116, (char)32, (char)67, (char)112, (char)54, (char)116, (char)111, (char)114, (char)54, (char)114, (char)101, (char)97, (char)32, (char)122, (char)105, (char)74, (char)107, (char)97, (char)110, (char)110, (char)30, (char)108, (char)108, (char)9, (char)63, (char)8, (char)251, (char)8, (char)190, (char)32, (char)109, (char)112, (char)33, (char)108, (char)110, (char)54, (char)83, (char)112, (char)105, (char)31, (char)117, (char)115, (char)30, (char)115, (char)116, (char)33, (char)114, (char)102, (char)13, (char)6, (char)13, (char)143, (char)32, (char)102, (char)102, (char)32, (char)115, (char)104, (char)33, (char)52, (char)52, (char)33, (char)73, (char)99, (char)52, (char)104, (char)97, (char)116, (char)32, (char)106, (char)97, (char)54, (char)46, (char)119, (char)95, (char)12, (char)20, (char)8, (char)103, (char)32, (char)50, (char)55, (char)34, (char)65, (char)114, (char)13, (char)1108, (char)33, (char)252, (char)98, (char)31, (char)105, (char)101, (char)30, (char)49, (char)48, (char)54, (char)85, (char)110, (char)100, (char)54, (char)105, (char)101, (char)115, (char)33, (char)57, (char)49, (char)14, (char)182, (char)15, (char)233, (char)16, (char)216, (char)18, (char)331, (char)18, (char)9600, (char)17, (char)231, (char)34, (char)73, (char)73, (char)32, (char)103, (char)111, (char)33, (char)111, (char)98, (char)12, (char)39, (char)219, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)8, (char)120, (char)10, (char)91, (char)53, (char)110, (char)103, (char)101, (char)33, (char)108, (char)116, (char)34, (char)56, (char)56, (char)34, (char)90, (char)105, (char)32, (char)78, (char)97, (char)32, (char)70, (char)97, (char)10, (char)93, (char)8, (char)188, (char)10, (char)228, (char)53, (char)97, (char)117, (char)115, (char)74, (char)115, (char)105, (char)99, (char)104, (char)72, (char)105, (char)99, (char)111, (char)110, (char)9, (char)54, (char)12, (char)9608, (char)33, (char)71, (char)114, (char)32, (char)112, (char)111, (char)31, (char)51, (char)48, (char)7, (char)62, (char)52, (char)83, (char)99, (char)104, (char)54, (char)112, (char)97, (char)114, (char)33, (char)101, (char)121, (char)33, (char)71, (char)97, (char)54, (char)78, (char)111, (char)114, (char)93, (char)109, (char)97, (char)102, (char)105, (char)97, (char)30, (char)49, (char)50, (char)33, (char)74, (char)97, (char)33, (char)115, (char)252, (char)15, (char)184, (char)15, (char)138, (char)15, (char)27, (char)15, (char)135, (char)34, (char)246, (char)110, (char)54, (char)109, (char)97, (char)103, (char)52, (char)118, (char)101, (char)114, (char)32, (char)71, (char)101, (char)11, (char)164, (char)31, (char)50, (char)50, (char)33, (char)97, (char)103, (char)34, (char)55, (char)50, (char)14, (char)144, (char)15, (char)244, (char)15, (char)136, (char)53, (char)104, (char)97, (char)108, (char)31, (char)50, (char)49, (char)32, (char)114, (char)111, (char)33, (char)80, (char)115, (char)34, (char)53, (char)57, (char)34, (char)70, (char)117, (char)31, (char)108, (char)97, (char)32, (char)54, (char)48, (char)11, (char)80, (char)53, (char)83, (char)116, (char)117, (char)33, (char)109, (char)117, (char)34, (char)65, (char)97, (char)34, (char)54, (char)50, (char)7, (char)110, (char)7, (char)58, (char)32, (char)100, (char)116, (char)54, (char)79, (char)78, (char)76, (char)33, (char)57, (char)50, (char)94, (char)124, (char)47, (char)103, (char)111, (char)32, (char)136, (char)67, (char)104, (char)97, (char)110, (char)110, (char)101, (char)108, (char)53, (char)98, (char)101, (char)105, (char)32, (char)72, (char)105, (char)9, (char)2, (char)9, (char)56, (char)9, (char)102, (char)52, (char)50, (char)48, (char)48, (char)34, (char)102, (char)111, (char)34, (char)104, (char)109, (char)54, (char)114, (char)111, (char)115, (char)32, (char)103, (char)108, (char)8, (char)48, (char)33, (char)52, (char)57, (char)54, (char)101, (char)110, (char)115, (char)32, (char)51, (char)52, (char)54, (char)115, (char)119, (char)104, (char)33, (char)98, (char)116, (char)34, (char)72, (char)80, (char)18, (char)211, (char)18, (char)9618, (char)18, (char)199, (char)18, (char)209, (char)17, (char)8730, (char)17, (char)8595, (char)15, (char)226, (char)16, (char)177, (char)16, (char)926, (char)15, (char)132, (char)54, (char)66, (char)97, (char)100, (char)31, (char)101, (char)100, (char)12, (char)15, (char)54, (char)116, (char)100, (char)101, (char)74, (char)46, (char)112, (char)110, (char)103, (char)9, (char)100, (char)33, (char)109, (char)98, (char)33, (char)107, (char)110, (char)32, (char)68, (char)97, (char)32, (char)105, (char)114, (char)54, (char)71, (char)105, (char)114, (char)75, (char)50, (char)48, (char)48, (char)57, (char)29, (char)48, (char)48, (char)53, (char)80, (char)114, (char)105, (char)54, (char)66, (char)114, (char)101, (char)33, (char)84, (char)101, (char)34, (char)86, (char)101, (char)34, (char)53, (char)52, (char)33, (char)83, (char)104, (char)53, (char)87, (char)104, (char)111, (char)33, (char)102, (char)116, (char)33, (char)78, (char)101, (char)32, (char)88, (char)120, (char)94, (char)74, (char)97, (char)109, (char)101, (char)115, (char)32, (char)67, (char)108, (char)32, (char)109, (char)111, (char)54, (char)97, (char)110, (char)103, (char)12, (char)204, (char)33, (char)87, (char)117, (char)33, (char)48, (char)52, (char)9, (char)57, (char)74, (char)48, (char)48, (char)54, (char)53, (char)34, (char)67, (char)72, (char)34, (char)99, (char)105, (char)33, (char)103, (char)104, (char)31, (char)107, (char)101, (char)33, (char)117, (char)114, (char)33, (char)97, (char)107, (char)33, (char)105, (char)97, (char)33, (char)119, (char)117, (char)94, (char)112, (char)105, (char)99, (char)115, (char)47, (char)52, (char)100, (char)101, (char)110, (char)32, (char)76, (char)111, (char)53, (char)115, (char)116, (char)97, (char)34, (char)71, (char)66, (char)55, (char)115, (char)98, (char)117, (char)34, (char)111, (char)104, (char)34, (char)113, (char)117, (char)32, (char)83, (char)97, (char)31, (char)108, (char)105, (char)9, (char)97, (char)10, (char)79, (char)33, (char)70, (char)101, (char)34, (char)120, (char)121, (char)18, (char)163, (char)18, (char)1086, (char)17, (char)154, (char)16, (char)169, (char)17, (char)247, (char)17, (char)9559, (char)18, (char)9472, (char)18, (char)8220, (char)18, (char)173, (char)18, (char)189, (char)15, (char)171, (char)17, (char)9562, (char)18, (char)203, (char)18, (char)242, (char)17, (char)165, (char)17, (char)243, (char)74, (char)110, (char)105, (char)99, (char)104, (char)54, (char)98, (char)101, (char)115, (char)33, (char)116, (char)99, (char)12, (char)172, (char)12, (char)9829, (char)53, (char)109, (char)101, (char)110, (char)32, (char)83, (char)116, (char)52, (char)98, (char)117, (char)114, (char)31, (char)114, (char)116, (char)33, (char)57, (char)51, (char)33, (char)87, (char)97, (char)33, (char)84, (char)105, (char)33, (char)48, (char)55, (char)32, (char)103, (char)97, (char)33, (char)100, (char)115, (char)34, (char)57, (char)57, (char)34, (char)77, (char)117, (char)51, (char)115, (char)99, (char)104, (char)33, (char)74, (char)111, (char)54, (char)72, (char)101, (char)114, (char)34, (char)103, (char)103, (char)34, (char)118, (char)98, (char)33, (char)105, (char)98, (char)53, (char)101, (char)110, (char)116, (char)34, (char)56, (char)55, (char)34, (char)121, (char)97, (char)33, (char)108, (char)102, (char)32, (char)111, (char)114, (char)33, (char)101, (char)98, (char)33, (char)97, (char)119, (char)11, (char)18, (char)32, (char)116, (char)122, (char)29, (char)99, (char)104, (char)33, (char)114, (char)108, (char)159, (char)46, (char)115, (char)104, (char)97, (char)100, (char)111, (char)119, (char)95, (char)32, (char)115, (char)112, (char)33, (char)116, (char)111, (char)33, (char)111, (char)111, (char)11, (char)42, (char)30, (char)49, (char)53, (char)9, (char)111, (char)34, (char)110, (char)102, (char)34, (char)56, (char)54, (char)33, (char)57, (char)53, (char)54, (char)73, (char)78, (char)69, (char)33, (char)83, (char)105, (char)74, (char)70, (char)111, (char)116, (char)111, (char)33, (char)121, (char)115, (char)34, (char)57, (char)54, (char)15, (char)26, (char)15, (char)31, (char)15, (char)152, (char)16, (char)225, (char)17, (char)212, (char)18, (char)1111, (char)18, (char)236, (char)7, (char)114, (char)52, (char)105, (char)115, (char)116, (char)54, (char)76, (char)97, (char)100, (char)54, (char)77, (char)111, (char)109, (char)33, (char)84, (char)104, (char)54, (char)80, (char)114, (char)111, (char)32, (char)107, (char)97, (char)32, (char)67, (char)104, (char)31, (char)110, (char)105, (char)30, (char)115, (char)115, (char)73, (char)46, (char)109, (char)121, (char)95, (char)32, (char)118, (char)105, (char)54, (char)77, (char)111, (char)110, (char)33, (char)112, (char)105, (char)33, (char)81, (char)102, (char)34, (char)111, (char)99, (char)34, (char)115, (char)103, (char)34, (char)84, (char)97, (char)34, (char)116, (char)119, (char)34, (char)105, (char)102, (char)34, (char)122, (char)122, (char)31, (char)110, (char)97, (char)33, (char)65, (char)117, (char)33, (char)97, (char)105, (char)158, (char)75, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)10, (char)88, (char)71, (char)176, (char)62, (char)95, (char)104, (char)35, (char)117, (char)103, (char)35, (char)77, (char)121, (char)34, (char)80, (char)101, (char)34, (char)101, (char)120, (char)34, (char)78, (char)111, (char)32, (char)75, (char)97, (char)32, (char)110, (char)111, (char)34, (char)120, (char)116, (char)34, (char)104, (char)112, (char)34, (char)107, (char)114, (char)34, (char)80, (char)117, (char)30, (char)49, (char)56, (char)9, (char)82, (char)53, (char)83, (char)105, (char)110, (char)32, (char)65, (char)110, (char)34, (char)82, (char)105, (char)55, (char)115, (char)101, (char)108, (char)54, (char)98, (char)101, (char)97, (char)33, (char)86, (char)111, (char)34, (char)97, (char)104, (char)34, (char)81, (char)117, (char)7, (char)43, (char)10, (char)99, (char)33, (char)116, (char)115, (char)33, (char)84, (char)114, (char)32, (char)87, (char)101, (char)10, (char)76, (char)241, (char)105, (char)99, (char)111, (char)110, (char)95, (char)103, (char)101, (char)110, (char)100, (char)101, (char)114, (char)95, (char)31, (char)109, (char)101, (char)53, (char)46, (char)104, (char)95, (char)54, (char)119, (char)119, (char)119, (char)34, (char)121, (char)111, (char)34, (char)104, (char)117, (char)255, (char)12, (char)10, (char)124, (char)47, (char)102, (char)111, (char)116, (char)111, (char)119, (char)104, (char)111, (char)105, (char)115, (char)32, (char)34, (char)53, (char)109, (char)105, (char)116, (char)32, (char)115, (char)111, (char)8, (char)11, (char)52, (char)70, (char)114, (char)101, (char)54, (char)109, (char)97, (char)120, (char)54, (char)114, (char)101, (char)103, (char)33, (char)86, (char)97, (char)54, (char)119, (char)101, (char)114, (char)10, (char)117, (char)54, (char)119, (char)105, (char)101, (char)117, (char)105, (char)99, (char)111, (char)110, (char)115, (char)47, (char)33, (char)69, (char)110, (char)15, (char)9552, (char)16, (char)149, (char)16, (char)215, (char)14, (char)159, (char)34, (char)106, (char)111, (char)7, (char)37, (char)220, (char)50, (char)53, (char)53, (char)44, (char)50, (char)53, (char)53, (char)44, (char)50, (char)53, (char)53, (char)32, (char)101, (char)105, (char)33, (char)100, (char)114, (char)33, (char)105, (char)112, (char)32, (char)68, (char)117, (char)34, (char)107, (char)102, (char)34, (char)53, (char)55, (char)33, (char)80, (char)108, (char)31, (char)108, (char)111, (char)53, (char)83, (char)116, (char)97, (char)14, (char)945, (char)15, (char)29, (char)17, (char)964, (char)17, (char)210, (char)16, (char)145, (char)34, (char)69, (char)82, (char)33, (char)107, (char)117, (char)32, (char)108, (char)115, (char)54, (char)97, (char)99, (char)116, (char)33, (char)70, (char)114, (char)10, (char)92, (char)255, (char)19, (char)11, (char)102, (char)111, (char)116, (char)111, (char)115, (char)47, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)63, (char)110, (char)61, (char)11, (char)72, (char)50, (char)32, (char)32, (char)32, (char)33, (char)76, (char)117, (char)54, (char)100, (char)101, (char)109, (char)53, (char)101, (char)110, (char)100, (char)35, (char)66, (char)252, (char)35, (char)97, (char)112, (char)34, (char)55, (char)52, (char)54, (char)99, (char)104, (char)108, (char)53, (char)103, (char)108, (char)101, (char)30, (char)52, (char)48, (char)9, (char)33, (char)30, (char)51, (char)50, (char)52, (char)101, (char)105, (char)110, (char)53, (char)115, (char)101, (char)105, (char)33, (char)75, (char)101, (char)12, (char)223, (char)32, (char)102, (char)103, (char)53, (char)98, (char)97, (char)108, (char)31, (char)116, (char)97, (char)30, (char)49, (char)57, (char)52, (char)110, (char)100, (char)101, (char)54, (char)77, (char)101, (char)110, (char)54, (char)76, (char)105, (char)101, (char)32, (char)97, (char)100, (char)31, (char)83, (char)102, (char)10, (char)167, (char)30, (char)105, (char)110, (char)35, (char)101, (char)99, (char)15, (char)30, (char)16, (char)8249, (char)17, (char)221, (char)18, (char)166, (char)18, (char)234, (char)14, (char)953, (char)35, (char)72, (char)252, (char)33, (char)111, (char)115, (char)32, (char)114, (char)110, (char)74, (char)46, (char)109, (char)120, (char)95, (char)53, (char)119, (char)101, (char)105, (char)30, (char)46, (char)46, (char)54, (char)108, (char)101, (char)114, (char)33, (char)114, (char)107, (char)11, (char)113, (char)34, (char)116, (char)102, (char)34, (char)85, (char)110, (char)33, (char)80, (char)111, (char)53, (char)86, (char)101, (char)114, (char)9, (char)112, (char)7, (char)47, (char)12, (char)125, (char)35, (char)100, (char)119, (char)15, (char)1109, (char)16, (char)146, (char)16, (char)235, (char)34, (char)97, (char)122, (char)33, (char)108, (char)117, (char)33, (char)70, (char)105, (char)33, (char)107, (char)108, (char)33, (char)119, (char)111, (char)32, (char)56, (char)48, (char)255, (char)32, (char)9, (char)0, (char)112, (char)0, (char)66, (char)0, (char)112, (char)105, (char)99, (char)115, (char)47, (char)105, (char)99, (char)111, (char)110, (char)95, (char)102, (char)117, (char)108, (char)108, (char)67, (char)104, (char)97, (char)110, (char)110, (char)101, (char)108, (char)46, (char)103, (char)105, (char)102, (char)0, (char)45, (char)0, (char)30, (char)101, (char)108, (char)31, (char)116, (char)121, (char)54, (char)78, (char)101, (char)117, (char)34, (char)53, (char)50, (char)34, (char)108, (char)109, (char)32, (char)48, (char)49, (char)113, (char)124, (char)47, (char)119, (char)32, (char)34, (char)60, (char)180, (char)46, (char)113, (char)117, (char)97, (char)100, (char)99, (char)117, (char)116, (char)95, (char)35, (char)54, (char)57, (char)35, (char)100, (char)228, (char)34, (char)116, (char)117, (char)54, (char)102, (char)114, (char)101, (char)34, (char)105, (char)104, (char)35, (char)101, (char)122, (char)35, (char)57, (char)56, (char)31, (char)116, (char)101, (char)53, (char)103, (char)105, (char)114, (char)53, (char)99, (char)110, (char)116, (char)158, (char)46, (char)98, (char)111, (char)114, (char)100, (char)101, (char)114, (char)95, (char)32, (char)105, (char)116, (char)11, (char)89, (char)255, (char)14, (char)11, (char)102, (char)117, (char)108, (char)108, (char)67, (char)104, (char)97, (char)110, (char)110, (char)101, (char)108, (char)46, (char)103, (char)105, (char)102, (char)34, (char)122, (char)111, (char)34, (char)107, (char)99, (char)34, (char)65, (char)98, (char)15, (char)965, (char)18, (char)9642, (char)19, (char)9577, (char)19, (char)8494, (char)17, (char)202, (char)16, (char)141, (char)35, (char)56, (char)50, (char)32, (char)51, (char)51, (char)31, (char)110, (char)100, (char)10, (char)70, (char)32, (char)83, (char)112, (char)11, (char)94, (char)54, (char)97, (char)99, (char)104, (char)33, (char)117, (char)99, (char)32, (char)107, (char)105, (char)52, (char)105, (char)99, (char)104, (char)55, (char)102, (char)101, (char)108, (char)35, (char)56, (char)51, (char)15, (char)191, (char)15, (char)219, (char)33, (char)98, (char)114, (char)54, (char)70, (char)114, (char)105, (char)54, (char)100, (char)111, (char)114, (char)31, (char)100, (char)101, (char)31, (char)53, (char)48, (char)33, (char)97, (char)97, (char)34, (char)103, (char)98, (char)34, (char)108, (char)99, (char)54, (char)102, (char)252, (char)114, (char)33, (char)55, (char)53, (char)32, (char)116, (char)104, (char)53, (char)66, (char)101, (char)114, (char)54, (char)66, (char)97, (char)108, (char)33, (char)55, (char)48, (char)33, (char)52, (char)53, (char)34, (char)83, (char)119, (char)34, (char)52, (char)49, (char)32, (char)105, (char)108, (char)54, (char)104, (char)102, (char)108, (char)34, (char)73, (char)104, (char)13, (char)126, (char)255, (char)14, (char)10, (char)112, (char)105, (char)99, (char)115, (char)47, (char)102, (char)101, (char)109, (char)97, (char)108, (char)101, (char)46, (char)103, (char)105, (char)102, (char)53, (char)104, (char)116, (char)116, (char)16, (char)9834, (char)18, (char)161, (char)18, (char)232, (char)18, (char)305, (char)19, (char)8212, (char)62, (char)92, (char)92, (char)92, (char)20, (char)1241, (char)15, (char)183, (char)35, (char)65, (char)116, (char)35, (char)76, (char)69, (char)35, (char)83, (char)107, (char)75, (char)50, (char)48, (char)49, (char)48, (char)71, (char)46, (char)103, (char)105, (char)102, (char)74, (char)102, (char)111, (char)116, (char)111, (char)54, (char)76, (char)97, (char)110, (char)13, (char)19, (char)34, (char)105, (char)107, (char)199, (char)176, (char)62, (char)103, (char)116, (char)46, (char)103, (char)105, (char)102, (char)60, (char)176, (char)32, (char)72, (char)111, (char)34, (char)100, (char)121, (char)34, (char)80, (char)105, (char)54, (char)97, (char)108, (char)116, (char)32, (char)50, (char)56, (char)74, (char)46, (char)106, (char)112, (char)103, (char)7, (char)101, (char)8, (char)115, (char)32, (char)69, (char)108, (char)54, (char)109, (char)101, (char)114, (char)255, (char)14, (char)12, (char)109, (char)97, (char)108, (char)101, (char)46, (char)98, (char)46, (char)109, (char)121, (char)95, (char)51, (char)46, (char)103, (char)105, (char)102, (char)136, (char)0, (char)70, (char)108, (char)105, (char)114, (char)116, (char)32, (char)14, (char)1103, (char)35, (char)55, (char)54, (char)34, (char)110, (char)98, (char)33, (char)76, (char)97, (char)32, (char)110, (char)115, (char)33, (char)114, (char)103, (char)33, (char)48, (char)56, (char)32, (char)66, (char)101, (char)11, (char)118, (char)34, (char)109, (char)108, (char)35, (char)99, (char)100, (char)35, (char)55, (char)51, (char)33, (char)66, (char)117, (char)32, (char)116, (char)114, (char)32, (char)119, (char)105, (char)31, (char)109, (char)109, (char)33, (char)115, (char)102, (char)54, (char)68, (char)105, (char)101, (char)32, (char)110, (char)116, (char)32, (char)108, (char)121, (char)33, (char)101, (char)109, (char)54, (char)116, (char)109, (char)117, (char)34, (char)111, (char)100, (char)34, (char)115, (char)100, (char)54, (char)75, (char)105, (char)115, (char)34, (char)68, (char)68, (char)16, (char)151, (char)17, (char)168, (char)17, (char)206, (char)15, (char)951, (char)35, (char)54, (char)56, (char)12, (char)81, (char)31, (char)103, (char)101, (char)35, (char)56, (char)52, (char)35, (char)70, (char)67, (char)34, (char)103, (char)115, (char)33, (char)82, (char)97, (char)33, (char)115, (char)117, (char)34, (char)105, (char)118, (char)35, (char)104, (char)104, (char)35, (char)80, (char)114, (char)7, (char)60, (char)31, (char)104, (char)97, (char)31, (char)111, (char)110, (char)10, (char)84, (char)52, (char)99, (char)104, (char)101, (char)8, (char)104, (char)7, (char)34, (char)255, (char)13, (char)12, (char)99, (char)108, (char)111, (char)117, (char)100, (char)115, (char)98, (char)108, (char)117, (char)101, (char)46, (char)103, (char)105, (char)102, (char)34, (char)67, (char)105, (char)13, (char)3, (char)55, (char)108, (char)105, (char)103, (char)14, (char)23, (char)16, (char)142, (char)16, (char)150, (char)18, (char)241, (char)18, (char)253, (char)18, (char)174, (char)18, (char)1091, (char)19, (char)942, (char)19, (char)304, (char)19, (char)322, (char)19, (char)324, (char)17, (char)961, (char)33, (char)98, (char)98, (char)53, (char)98, (char)101, (char)114, (char)32, (char)76, (char)105, (char)33, (char)68, (char)105, (char)13, (char)175, (char)34, (char)108, (char)103, (char)33, (char)65, (char)108, (char)54, (char)79, (char)117, (char)116, (char)32, (char)50, (char)52, (char)32, (char)117, (char)110, (char)32, (char)51, (char)57, (char)55, (char)117, (char)114, (char)116, (char)35, (char)73, (char)115, (char)35, (char)82, (char)102, (char)33, (char)55, (char)49, (char)33, (char)104, (char)108, (char)33, (char)66, (char)108, (char)32, (char)66, (char)97, (char)53, (char)101, (char)97, (char)114, (char)54, (char)101, (char)99, (char)104, (char)34, (char)85, (char)115, (char)34, (char)52, (char)55, (char)54, (char)105, (char)112, (char)105, (char)12, (char)59, (char)32, (char)122, (char)101, (char)7, (char)46, (char)9, (char)55, (char)31, (char)97, (char)116, (char)34, (char)119, (char)228, (char)35, (char)72, (char)117, (char)15, (char)8706, (char)16, (char)186, (char)17, (char)240, (char)17, (char)65273, (char)33, (char)223, (char)101, (char)33, (char)117, (char)116, (char)33, (char)102, (char)117, (char)73, (char)62, (char)45, (char)45, (char)60, (char)31, (char)97, (char)110, (char)32, (char)76, (char)101, (char)32, (char)115, (char)97, (char)13, (char)4, (char)34, (char)103, (char)116, (char)33, (char)106, (char)101, (char)53, (char)112, (char)119, (char)100, (char)32, (char)82, (char)101, (char)32, (char)104, (char)101, (char)32, (char)104, (char)111, (char)34, (char)111, (char)109, (char)34, (char)111, (char)107, (char)33, (char)53, (char)53, (char)52, (char)119, (char)97, (char)114, (char)53, (char)104, (char)101, (char)110, (char)34, (char)112, (char)101, (char)35, (char)101, (char)107, (char)35, (char)76, (char)76, (char)33, (char)98, (char)117, (char)31, (char)114, (char)101, (char)34, (char)119, (char)252, (char)34, (char)54, (char)54, (char)33, (char)83, (char)101, (char)11, (char)90, (char)33, (char)252, (char)99, (char)34, (char)67, (char)114, (char)34, (char)103, (char)117, (char)32, (char)122, (char)117, (char)12, (char)74, (char)34, (char)109, (char)228, (char)34, (char)52, (char)50, (char)33, (char)98, (char)111, (char)33, (char)67, (char)97, (char)31, (char)101, (char)115, (char)54, (char)84, (char)97, (char)103, (char)35, (char)82, (char)82, (char)35, (char)114, (char)121, (char)13, (char)5, (char)32, (char)50, (char)54, (char)34, (char)114, (char)114, (char)34, (char)111, (char)102, (char)54, (char)68, (char)111, (char)114, (char)53, (char)114, (char)101, (char)115, (char)53, (char)99, (char)103, (char)105, (char)33, (char)100, (char)100, (char)255, (char)57, (char)12, (char)124, (char)104, (char)116, (char)116, (char)112, (char)58, (char)47, (char)47, (char)119, (char)119, (char)119, (char)51, (char)46, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)58, (char)56, (char)48, (char)56, (char)48, (char)47, (char)116, (char)120, (char)116, (char)108, (char)47, (char)99, (char)108, (char)105, (char)99, (char)107, (char)63, (char)100, (char)61, (char)107, (char)110, (char)117, (char)100, (char)100, (char)101, (char)108, (char)115, (char)46, (char)100, (char)101, (char)38, (char)105, (char)100, (char)61, (char)33, (char)83, (char)109, (char)34, (char)52, (char)51, (char)34, (char)97, (char)102, (char)53, (char)105, (char)110, (char)101, (char)33, (char)67, (char)111, (char)18, (char)170, (char)18, (char)179, (char)17, (char)931, (char)16, (char)137, (char)15, (char)187, (char)35, (char)67, (char)69, (char)34, (char)108, (char)107, (char)32, (char)97, (char)109, (char)32, (char)112, (char)112, (char)33, (char)115, (char)119, (char)35, (char)54, (char)51, (char)35, (char)109, (char)121, (char)35, (char)112, (char)102, (char)17, (char)156, (char)17, (char)230, (char)16, (char)140, (char)15, (char)28, (char)54, (char)102, (char)104, (char)101, (char)13, (char)8, (char)34, (char)86, (char)105, (char)53, (char)116, (char)101, (char)114, (char)10, (char)255, (char)31, (char)49, (char)49, (char)33, (char)102, (char)97, (char)35, (char)115, (char)114, (char)35, (char)77, (char)102, (char)13, (char)16, (char)96, (char)176, (char)62, (char)115, (char)109, (char)95, (char)54, (char)65, (char)110, (char)122, (char)10, (char)65, (char)32, (char)97, (char)115, (char)35, (char)78, (char)82, (char)35, (char)108, (char)114, (char)35, (char)78, (char)84, (char)35, (char)54, (char)49, (char)33, (char)110, (char)122, (char)33, (char)97, (char)98, (char)33, (char)103, (char)105, (char)54, (char)100, (char)112, (char)103, (char)33, (char)103, (char)114, (char)9, (char)40, (char)255, (char)12, (char)10, (char)112, (char)105, (char)99, (char)115, (char)47, (char)109, (char)97, (char)108, (char)101, (char)46, (char)103, (char)105, (char)102, (char)32, (char)112, (char)103, (char)35, (char)67, (char)117, (char)19, (char)948, (char)19, (char)962, (char)19, (char)1754, (char)19, (char)8596, (char)18, (char)1110, (char)18, (char)9658, (char)17, (char)1750, (char)19, (char)273, (char)19, (char)295, (char)19, (char)423, (char)19, (char)1753, (char)18, (char)957, (char)18, (char)1089, (char)17, (char)207, (char)17, (char)237, (char)18, (char)9679, (char)18, (char)8221, (char)34, (char)79, (char)115, (char)33, (char)111, (char)119, (char)31, (char)99, (char)107, (char)11, (char)229, (char)32, (char)72, (char)97, (char)35, (char)103, (char)100, (char)35, (char)73, (char)116, (char)34, (char)107, (char)116, (char)54, (char)108, (char)101, (char)110, (char)33, (char)69, (char)105, (char)13, (char)7, (char)34, (char)102, (char)114, (char)10, (char)67, (char)9, (char)41, (char)54, (char)109, (char)105, (char)110, (char)54, (char)83, (char)105, (char)101, (char)12, (char)123, (char)34, (char)54, (char)53, (char)34, (char)77, (char)252, (char)11, (char)246, (char)35, (char)78, (char)252, (char)35, (char)68, (char)111, (char)34, (char)105, (char)111, (char)33, (char)80, (char)102, (char)54, (char)100, (char)97, (char)115, (char)12, (char)86, (char)95, (char)70, (char)108, (char)105, (char)114, (char)116, (char)11, (char)252, (char)34, (char)114, (char)122, (char)35, (char)71, (char)117, (char)35, (char)102, (char)109, (char)54, (char)72, (char)97, (char)109, (char)8, (char)116, (char)29, (char)101, (char)110, (char)29, (char)101, (char)114, (char)4, (char)0, (char)52, (char)100, (char)101, (char)114, (char)33, (char)67, (char)99, (char)54, (char)65, (char)108, (char)116, (char)53, (char)77, (char)105, (char)120, (char)35, (char)65, (char)115, (char)35, (char)116, (char)112, (char)55, (char)110, (char)101, (char)110, (char)33, (char)108, (char)100, (char)32, (char)48, (char)53, (char)31, (char)105, (char)115, (char)11, (char)195, (char)34, (char)76, (char)252, (char)15, (char)1752, (char)15, (char)1761, (char)15, (char)1762, (char)15, (char)162, (char)54, (char)71, (char)101, (char)115, (char)54, (char)97, (char)117, (char)102, (char)54, (char)97, (char)110, (char)100, (char)54, (char)98, (char)108, (char)103, (char)33, (char)112, (char)114, (char)52, (char)117, (char)110, (char)100, (char)31, (char)97, (char)108, (char)34, (char)73, (char)110, (char)34, (char)87, (char)252, (char)54, (char)104, (char)105, (char)101, (char)54, (char)103, (char)101, (char)115, (char)34, (char)246, (char)223, (char)34, (char)112, (char)115, (char)31, (char)98, (char)101, (char)32, (char)50, (char)53, (char)54, (char)49, (char)52, (char)48, (char)35, (char)104, (char)115, (char)16, (char)969, (char)16, (char)239, (char)16, (char)147, (char)16, (char)963, (char)34, (char)52, (char)54, (char)10, (char)128, (char)31, (char)49, (char)52, (char)32, (char)51, (char)53, (char)33, (char)69, (char)109, (char)54, (char)103, (char)101, (char)114, (char)31, (char)99, (char)103, (char)10, (char)107, (char)6, (char)45, (char)34, (char)119, (char)104, (char)35, (char)114, (char)112, (char)17, (char)148, (char)18, (char)923, (char)18, (char)155, (char)16, (char)9553, (char)16, (char)129, (char)17, (char)208, (char)19, (char)287, (char)19, (char)399, (char)19, (char)9632, (char)19, (char)9668, (char)33, (char)80, (char)97, (char)11, (char)85, (char)32, (char)98, (char)108, (char)33, (char)99, (char)97, (char)54, (char)118, (char)97, (char)116, (char)33, (char)51, (char)55, (char)34, (char)101, (char)117, (char)34, (char)109, (char)115, (char)33, (char)77, (char)105, (char)33, (char)99, (char)115, (char)53, (char)100, (char)105, (char)101, (char)33, (char)97, (char)121, (char)33, (char)102, (char)105, (char)10, (char)192, (char)32, (char)117, (char)109, (char)53, (char)115, (char)101, (char)110, (char)9, (char)61, (char)33, (char)66, (char)114, (char)34, (char)117, (char)108, (char)34, (char)102, (char)121, (char)53, (char)118, (char)111, (char)114, (char)33, (char)87, (char)108, (char)54, (char)116, (char)115, (char)99, (char)32, (char)114, (char)100, (char)31, (char)110, (char)101, (char)34, (char)75, (char)117, (char)15, (char)949, (char)15, (char)1090, (char)35, (char)82, (char)252, (char)54, (char)80, (char)97, (char)114, (char)35, (char)56, (char)53, (char)35, (char)119, (char)99, (char)34, (char)99, (char)114, (char)33, (char)114, (char)109, (char)8, (char)49, (char)6, (char)95, (char)4, (char)32 }))
    { }
    public Huffman(string pTree)
    {
    this._tree = new Dictionary<string, string>(); // erstellen einer neuen Key, Value Liste für eine einfache verwendung der Tree Werte
    this._helper = new StringBuilder(); // _helper" definieren um ihnals "bitBuffer" zu verwenden (Key)

    var pathIndex = 1; // "pathIndex" definieren, gibt den Weg im Tree an
    var treeDepth = -33; // "treeDepth" definieren, gibt die Tiefe im Tree an
    int valueLength; // "valueLength" definieren, gibt die Länge des String Werts an (Value)
    for (var index = 0; index < pTree.Length; index += valueLength + 1) // gehe jedes zeichen im Tree ("pTree") durch und addiere errechnete "valueLength" + 1 zum index um zum nächsten Key/Value Part zu gelangen
    {
    var c = (int)pTree[index]; // Diese char gibt an um wie die Länge des Paths und des Werts berechnet werden müssen
    int pathLength;
    if (c == 255)
    {
    valueLength = (int)pTree[index + 1] + 1; // "valueLength" (Die Länge des String Werts im Tree) auslesen
    pathLength = (int)pTree[index + 2]; // "pathLength" (Die Länge des Path Werts im Tree) auslesen
    index += 2; // index um 2 addieren da wir 2 chars ausgelesen haben
    }
    else
    {
    valueLength = c / 21 + 1; // "valueLength" (Die Länge des String Werts im Tree) anhand des chars ("c") berechnen
    pathLength = c % 21; // "pathLength" (Die Länge des Path Werts im Tree) anhand des chars ("c") berechnen
    }

    if ((pathIndex & 1) == 0) // wenn "pathIndex" & 1 nicht gleich '0'
    {
    ++pathIndex; // "pathIndex" um 1 addieren
    for (; treeDepth < pathLength; ++treeDepth) // solange "treeDEpzh" kleiner als "pathLength", "treeDEpth" um 1 addieren...
    pathIndex <<= 1; // ...und den "pathIndex" um 1 nach links verschieben
    }
    else // wenn "pathIndex" & 1 nicht gleich '1'
    {
    do // "treeDepth" und "pathIndex" berechnen solange...
    {
    pathIndex >>= 1; // "treeIndex" um 1 nach rechts verschieben
    --treeDepth; // "treeDepth" um 1 subtrahieren
    }
    while ((pathIndex & 1) == 1); // ..."pathIndex" & 1 gleich 1 sind.
    ++pathIndex; // "pathIndex" um 1 addieren
    for (; treeDepth < pathLength; ++treeDepth) // arbeite solange "treeDepth" kleiner als "pathLength"
    pathIndex <<= 1; // "pathIndex" um 1 nach links verschieben
    }

    int path = CalcPath(pathIndex, pathLength); // "path" berechnen (wird für den Key Wert gebraucht)
    string value = pTree.Substring(index + 1, valueLength); // String Wert für "bitBuffer" (Key) aus dem Tree entnehmen

    this._helper.Clear(); // buffer leeren um ihn erneut als "bitBuffer" zu verwenden
    do
    { // arbeite so lange wie...
    this._helper.Append(path & 1); // "bitWert" mithilfe des "path" berechnen

    path >>= 1; // "path" um eine Position nach rechts verschieben
    pathLength--; // länge um 1 subtrahieren
    } while (pathLength != 0); // ..."length" (Länge) nicht 0 ist.

    if (value == "\\\\\\") // 16 bit char indikator "\\\" (ist von Knuddels so vorgegeben)
    {
    this._16BitCharIndicator = _helper.ToString(); // "bitBuffer" als "_16BitCharIndicator" festlegen um ihn soäter für die Kompression von 16 Bit Zeichen zu verwendne
    }
    this._helper.Append("1"); // Bit Ende hinzufügen

    if (_tree.ContainsKey(this._helper.ToString())) // sollte der Tree bereits diesen Key enthalten Error werfen (Tree fehlerhaft)
    throw new Exception(string.Format("Error constructing tree (Value: {0}, Path: {1}, PathLength: {2})", value, path, pathLength));

    _tree.Add(this._helper.ToString(), value); // errechneten Werte zum Tree hinzufügen
    }
    }

    private int CalcPath(int pathIndex, int pathLength)
    {
    int path = 0; // berechneten Wert definieren
    int shiftHelper = 1; // nach links zu verschiebende länge definieren
    int pathCounter = 1 << pathLength - 1; // zu addierende Zahl definieren
    for (; pathLength > 0; --pathLength)
    { // zu addierende zahl berechnen
    if ((pathIndex & shiftHelper) != 0) // sollte die "zu addierende Zahl" (pathCounter) & "shiftHelper" nicht '0' sein dann...
    path += pathCounter; // "pathCounter" zu rückgabe ("path" (berechneten Wert) addieren
    shiftHelper <<= 1; // "shiftHelper" um eine Position nach links verschieben
    pathCounter >>= 1; // "pathCounter" um eine Position nach rechts verschieben
    }
    return path; // berechneten Wert zurückgeben
    }

    #endregion

    #region Compress

    public byte[] Compress(string pString)
    {
    if (pString == null) // sollte eingabe gleich "null"
    pString = string.Empty; // eingabe einen leeren string zuweisen

    lock (this._helper) // den hilf buffer blockieren das keine anderen daten hinzugefügt werden können
    {
    this._helper.Clear(); // temp buffer leeren um ihn als "charBuffer" zu verwenden

    var bitBuffer = new StringBuilder(); // erstellen eines StringBuilders worin die bit segmente gespeichert werden

    for (var index = 0; index < pString.Length; ++index) //alle zeichen von "pString" durchgehen
    {
    this._helper.Append(pString[index]); // zeichen zum "charBuffer" bufer hinzufügen
    if (_tree.ContainsValue(this._helper.ToString())) //prüfen ob die zeichenkette im tree existiert
    {
    foreach (var charPair in _tree) // alle werte im tree durchgehen
    {
    if (charPair.Value != this._helper.ToString()) // wenn die temp zeichenkette nicht im tree enthalten ist
    continue; // suche weiter

    // Suche zusätzlich nach Zeichenketten (Beispiel: J, Ja, Jam, Jame, James)
    for (index += 1; index < pString.Length; ++index) // starte die suche bei der Position wo das Zeichen gefunden wurde + 1 (nächstes Zeichen)
    {
    this._helper.Append(pString[index]); // // zeichen zum "charBuffer" bufer hinzufügen

    if (!_tree.ContainsValue(this._helper.ToString()))
    { // zeichenkette existiert nicht
    this._helper.Remove(_helper.Length - 1, 1); // lösche zuletzt hinzugefügtes Zeichen
    index--; // gehe eine Position im Eingabe Stream (pString) zurück
    break; // Zeichenketten suche untergrechen da sie offenbar nicht existiert
    }
    }

    foreach (var pair in _tree) // gehe alle Werte im Tree durch
    {
    if (pair.Value == _helper.ToString()) // Wenn die Zeichenkette im Tree gefunden wird
    {
    bitBuffer.Append(pair.Key.Substring(0, pair.Key.Length - 1)); // die bit werte der gefunden kette dem bitBuffer hinzufügen
    this._helper.Clear(); //den temp buffer zur weiter verwenung leeren
    break; // temp zeichen gefunden suchen beenden
    }
    }
    break; // temp zeichen kette kette gefunden suchen beenden
    }
    }
    else // 16-Bit zeichen (boa ich hasse knuddels so sehr)
    { //zeichen welche nicht im tree sind... abfuck
    bitBuffer.Append(this._16BitCharIndicator); // 16-bit char indikator welche aus dem tree ausgelesen wurde
    this._helper.Clear(); // temp buffer leeren um ihn als "charBuffer" verwenden zu können

    for (int bitCounter = 0; bitCounter < 16; bitCounter++) // 16 bit durchgehen
    {
    this._helper.Append(((pString[index]) >> bitCounter) & 1); // bit zeichen ( 0 oder 1 berechnen)
    }
    bitBuffer.Append(this._helper); // "charBuffer" den haupt buffer hinzufügen
    this._helper.Clear(); // "charBuffer" leeren
    }
    }

    // den bit stream in ein byte stream umwandeln
    var buffer = new List<byte>(); // //byte buffer erstellen

    var bits = new string(bitBuffer.ToString().Reverse().ToArray()); // die bitwerte umkeheren
    for (int index = bits.Length; index > 0; index -= index < 8 ? index : 8) // 8 bit zum "index" hinzufügen wenn verfügbar andernfalls die länge der verbleibenden zeichen
    { // alle bits rückwerts durchgehen
    buffer.Add((byte)Convert.ToInt32( // bit segment in ein byte umwandeln(1 byte = 8 bits)
    bits.Substring( // bit segment aus dem bitStream entnehemen
    index - 8 < 0 ? 0 : index - 8, // start index berechnen, sollte dieser kleiner als 0 sein dann 0 andernfalls werden 8 bit vom "index" abgezogen
    index < 8 ? index : 8 // end index berechnen, sollte dieser kleiner als 8 (ein bit) sein werden alle verbleibenden zeichen genutzt
    ),
    2 //basis der zahl
    ));
    }

    return buffer.ToArray(); // "ausgabe buffer" zurückgeben
    }
    }

    #endregion

    #region Decompress

    public string Decompress(byte[] pBuffer)
    {
    if (pBuffer == null) // sollte eingabe ("pBuffer") gleich "null" sein
    return string.Empty; // leeren String zurückgeben

    lock (_helper) // den hilf buffer blockieren das keine anderen daten hinzugefügt werden können
    {
    this._helper.Clear(); //// "bitValue" leeren um ihn erneut zu verwenden
    var buffer = new StringBuilder(); // "ausgabe buffer" erstellen

    var end = false; // boolean Wert definieren der angibt ob das Ende von der Eingabe ("pBuffer") erreicht wurde
    var index = 0; // int Wert deiniere der die Position in der Eingabe ("pBuffer") angibt
    var bitIndex = 0; // int Wert definieren welcher den index der Bits in den Bytes angibt

    while (!end) // solange arbeiten bis das ende vom input ("pBuffer") erreicht wurde
    {
    _helper.Append(GetBitValue(pBuffer, ref index, ref bitIndex, ref end)); // bit wert berechnen und "bitValue" hinzufügen
    _helper.Append("1"); // bit ende temporär hinzufügen

    if (_tree.ContainsKey(_helper.ToString()))
    { // "bitValue" existiert im tree
    var value = _tree[_helper.ToString()]; // wert für "bitValue" aus dem tree entnahmen
    if (value == "\\\\\\") // wenn "value" gleich '\\\' (16 bit indikator string)
    { // muss das originale char berechnet werden
    var charValue = 0;
    for (int j = 0; j < 16; ++j) // 16 bits durchgehen
    {
    charValue += (GetBitValue(pBuffer, ref index, ref bitIndex, ref end) << j); // bit Wert berechnen und um "j" stellen nach links verschieben anschließend zur "charValue" addieren
    }
    buffer.Append((char)charValue); // die berechnete zahl in ein char umwandeln und zum "ausgabe buffer" hinzufügen
    }
    else
    { // "bitValue" existiert im tree
    buffer.Append(value); // den wert der "bitValue" aus dem tree zum "ausgabe buffer" hinzufügen
    }
    _helper.Clear(); // "bitValue" leeren um ihn erneut zu verwenden
    }
    else
    { // "bitValue" existiert nicht im tree
    this._helper.Remove(_helper.Length - 1, 1); // bit ende wieder von "bitValue" entfernen
    }
    }

    return buffer.ToString(); // "ausgabe buffer" zurückgeben
    }
    }

    private int GetBitValue(byte[] buffer, ref int index, ref int bitIndex, ref bool end)
    {
    int bitValue = 0; // rückgabe variable definieren (Default: 0)
    if (((int)buffer[index] & 1 << bitIndex) != 0) // wenn das byte aus der eingabe ("pBuffer") der Position ("index") & 1 um "bitIndex" nach links verschoben nicht '0' ist...
    bitValue = 1; // ...dann rückgabe wert auf '1' festlegen
    ++bitIndex; // "bitIndex" um 1 addieren
    if (bitIndex > 7) // wenn "bitIndex" gleich 8 (ein byte)
    {
    bitIndex = 0; // "bitIndex" zurücksetzen
    ++index; // "index" (Position in der Eingabe ("pBuffer") um 1 addieren
    end = index == buffer.Length; // ist der "index" gleich die Länge der Eingabe ("pBuffer") ist der vorgang beendet
    }
    return bitValue; // "bitValue" (0 oder 1) zurückgeben
    }

    #endregion
    }
    }
    Geändert von SeBi (26.05.2020 um 05:00 Uhr) Grund: Kompressions Bug gefixxt

  5. The Following User Says Thank You to SeBi For This Useful Post:

    Bubble Gum (23.05.2020)

  6. #4

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [C#] Huffman

    Dein neuer Code produziert aber inkorrekte Ergebnisse (Compress).


    // String-Länge: 159
    String test = "Deutschland ist ein Bundesstaat in Mitteleuropa. Er besteht seit 1990 aus 16 Ländern und ist als freiheitlich-demokratischer und sozialer Rechtsstaat verfasst.";

    byte[] compressed = huffman.Compress(test); // Korrekt: compressed.Length = 92 | Bei deinem Code erhält man: compressed.Length = 150
    Geändert von Brainy (24.05.2020 um 11:25 Uhr)

  7. #5

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [C#] Huffman

    Guten Morgen,

    wie ich gesehen habe, hast du deinen Code soeben geändert. Trotzdem produziert dein Code immer noch nicht die gewünschten Ergebnisse.

    Deine Version:
    Spoiler:


    String test = "Das 1871 gegründete Deutsche Reich entwickelte sich rasch vom Agrar- zum Industriestaat. Nach dem verlorenen Ersten Weltkrieg wurde 1918 die Monarchie abgeschafft und die demokratische Weimarer Republik konstituiert. Ab 1933 führte die nationalsozialistische Diktatur zu politischer und rassistischer Verfolgung und gipfelte in der Ermordung von sechs Millionen Juden auch während des 1939 begonnenen verheerenden Zweiten Weltkrieges, der 1945 mit Deutschlands Niederlage endete. Das von den Siegermächten besetzte Land wurde 1949 geteilt. Der Gründung der Bundesrepublik als demokratischer westdeutscher Teilstaat mit Westbindung am 24. Mai 1949 folgte die Gründung der sozialistischen DDR am 7. Oktober 1949 als ostdeutscher Teilstaat unter sowjetischer Hegemonie. Die innerdeutsche Grenze war nach dem Berliner Mauerbau 1961 abgeriegelt. Nach der friedlichen Revolution in der DDR 1989 folgte die Lösung der deutschen Frage durch die Wiedervereinigung beider Landesteile am 3. Oktober 1990.";

    // Raw: 993
    // Compressed: 604
    // Compressed (bytes):
    // 254 109 249 164 253 252 237 77 250 204 138 170 246 105 24 186 240 205 31 65 109 31 161 54 79 85 169 218 39 32 242 201 12 255 134 67 250 19 79 186 116 231 143 150 244 143 128 97 204 10 47 196 67 13 222 38 145 159 143 239 124 206 163 28 196 167 135 120 238 79 179 141 37 57 75 45 62 184 175 220 252 34 73 255 98 31 127 210 69 90 250 147 114 68 145 227 56 48 254 176 191 216 231 227 136 37 147 160 240 205 79 51 39 233 230 127 4 186 243 66 141 252 153 213 90 130 170 177 165 97 15 190 70 125 145 26 191 143 153 49 174 218 191 216 39 72 80 151 135 167 223 104 135 199 113 112 215 223 23 211 112 168 224 248 209 190 125 67 38 40 252 252 31 246 100 198 139 227 224 174 99 95 106 159 209 151 251 110 241 135 253 164 142 119 149 170 253 226 127 192 211 35 136 87 238 187 197 27 236 165 138 108 249 139 50 54 99 15 226 139 82 8 79 99 228 15 13 198 229 243 235 104 249 34 253 248 35 173 68 126 110 238 157 31 225 124 62 231 126 212 37 166 218 167 217 198 146 156 165 71 164 252 3 190 72 61 125 250 158 134 161 11 239 106 77 45 207 123 191 230 93 109 239 243 201 67 115 240 254 109 121 131 125 8 63 131 199 62 186 116 155 251 48 224 129 87 181 223 72 254 62 184 175 220 252 34 126 240 237 85 91 175 217 193 211 16 123 251 156 89 77 125 183 248 3 190 141 139 154 72 154 186 243 66 141 252 15 111 249 124 28 177 100 18 20 126 254 153 106 182 142 161 11 63 255 129 92 175 16 15 245 233 251 52 155 21 132 97 164 249 113 127 223 6 175 169 246 139 248 193 251 140 190 92 237 95 236 237 115 102 53 245 221 226 15 248 244 27 237 240 56 14 238 218 253 237 38 217 143 251 135 12 62 180 105 104 101 243 95 196 15 254 240 150 47 193 217 58 134 46 252 252 7 114 189 66 60 212 247 125 252 159 126 134 225 37 40 252 252 171 190 189 32 198 221 28 124 219 126 241 171 174 124 145 174 116 132 111 159 115 253 255 145 62 193 200 207 199 175 59 99 243 175 41 209 133 139 198 47 50 73 255 164 28 187 165 237 217 216 224 109 18 249 7 252 52 183 212 95 200 93 187 127 4 134 83 65 4 117 249 197 255 128 111 55 201 190 8 189 189 207 232 203 213 254 197 62 173 25 181 159 52 127 192 215 49 116 225 231 62 215 93 162 249 134 161 66 247 95 236 53 225 215 188 243 133 232 221 119 139 247 218 1 223 72 117 136 87 175 230 143 251 89 131 15 109 26 90 217 252 23 209 195 0



    Korrekt:
    Spoiler:


    String test = "Das 1871 gegründete Deutsche Reich entwickelte sich rasch vom Agrar- zum Industriestaat. Nach dem verlorenen Ersten Weltkrieg wurde 1918 die Monarchie abgeschafft und die demokratische Weimarer Republik konstituiert. Ab 1933 führte die nationalsozialistische Diktatur zu politischer und rassistischer Verfolgung und gipfelte in der Ermordung von sechs Millionen Juden auch während des 1939 begonnenen verheerenden Zweiten Weltkrieges, der 1945 mit Deutschlands Niederlage endete. Das von den Siegermächten besetzte Land wurde 1949 geteilt. Der Gründung der Bundesrepublik als demokratischer westdeutscher Teilstaat mit Westbindung am 24. Mai 1949 folgte die Gründung der sozialistischen DDR am 7. Oktober 1949 als ostdeutscher Teilstaat unter sowjetischer Hegemonie. Die innerdeutsche Grenze war nach dem Berliner Mauerbau 1961 abgeriegelt. Nach der friedlichen Revolution in der DDR 1989 folgte die Lösung der deutschen Frage durch die Wiedervereinigung beider Landesteile am 3. Oktober 1990.";

    // Raw: 993
    // Compressed: 602
    // Compressed (bytes):
    // 254 109 249 164 253 252 237 77 250 204 138 170 246 105 24 186 240 205 31 65 109 31 161 54 79 85 169 218 183 243 147 25 254 13 135 244 39 158 116 233 206 31 45 233 31 1 195 152 21 94 136 135 26 188 77 34 63 31 223 249 156 71 57 136 79 15 241 220 159 102 27 75 114 150 90 124 112 95 185 249 69 146 254 197 62 254 164 139 180 244 39 229 136 34 199 113 96 252 97 127 177 207 199 17 75 38 65 225 155 159 102 78 210 205 255 8 116 231 133 26 249 51 171 181 4 85 99 75 195 30 124 141 250 34 53 126 31 51 99 92 181 127 177 79 144 160 46 15 79 191 209 14 143 227 224 174 191 47 166 225 80 193 241 163 125 251 134 76 80 248 249 63 236 201 140 23 199 193 93 199 190 212 62 163 47 247 221 226 15 251 73 29 239 42 85 251 197 255 128 167 71 16 175 220 119 139 55 216 75 21 217 242 23 101 108 198 30 196 23 165 16 158 198 200 31 26 140 203 231 215 209 242 69 250 241 71 90 137 252 220 220 59 63 194 249 124 206 253 168 75 76 181 79 179 141 37 57 75 143 72 249 7 124 145 122 250 244 61 13 67 23 222 213 154 90 158 247 126 205 187 218 222 231 147 135 230 224 253 219 242 6 251 16 126 6 143 125 116 233 54 247 97 192 3 175 106 191 145 252 125 112 95 185 249 69 252 224 219 171 182 94 179 131 167 33 246 246 57 179 154 250 110 241 7 124 27 23 53 145 52 117 231 133 26 249 31 222 242 249 56 98 201 36 40 252 252 51 213 108 29 67 23 126 254 3 185 94 33 30 234 211 247 105 54 43 8 195 72 243 227 254 190 13 94 83 237 23 241 131 247 25 125 185 218 191 216 219 231 204 106 234 187 197 31 240 233 55 218 225 113 28 220 181 251 219 77 178 31 247 15 25 124 104 211 208 202 230 191 136 31 252 225 45 95 130 126 59 116 225 231 63 144 235 21 226 161 190 239 227 255 244 51 12 47 65 225 231 95 245 237 5 49 238 230 224 219 246 139 95 117 229 139 116 165 35 124 251 156 235 255 143 244 9 70 126 62 126 221 25 155 127 77 137 46 92 52 126 145 73 250 39 229 216 45 109 207 198 6 111 147 200 63 224 167 185 165 254 66 238 218 253 35 48 156 10 34 168 203 47 254 7 124 187 73 246 69 232 237 125 70 95 174 246 47 246 105 205 168 253 164 249 3 190 142 161 11 63 247 185 238 18 205 55 12 21 186 255 98 175 9 191 230 157 47 68 239 190 91 188 215 14 248 70 170 67 188 122 53 127 220 207 26 124 104 211 208 202 230 191 136 30 6



    Abgesehen davon ist dein Code inperformanter und schluckt mehr Memory als meine gepostete Variante (kannst du selbst z.B. auf dotnetfiddle.net testen). Vor allem, wenn du den oben genannten Test-String (ist übrigens aus Wikipedia) 100x compresst, erhält man sehr deutliche Unterschiede.

    Dazu mal die Ergebnisse von DotNetFiddle (100x Compress):

    Benutzter Code:


    public static void Main(String[] args) {
    Huffman huffman = new Huffman();

    String test = "Das 1871 gegründete Deutsche Reich entwickelte sich rasch vom Agrar- zum Industriestaat. Nach dem verlorenen Ersten Weltkrieg wurde 1918 die Monarchie abgeschafft und die demokratische Weimarer Republik konstituiert. Ab 1933 führte die nationalsozialistische Diktatur zu politischer und rassistischer Verfolgung und gipfelte in der Ermordung von sechs Millionen Juden auch während des 1939 begonnenen verheerenden Zweiten Weltkrieges, der 1945 mit Deutschlands Niederlage endete. Das von den Siegermächten besetzte Land wurde 1949 geteilt. Der Gründung der Bundesrepublik als demokratischer westdeutscher Teilstaat mit Westbindung am 24. Mai 1949 folgte die Gründung der sozialistischen DDR am 7. Oktober 1949 als ostdeutscher Teilstaat unter sowjetischer Hegemonie. Die innerdeutsche Grenze war nach dem Berliner Mauerbau 1961 abgeriegelt. Nach der friedlichen Revolution in der DDR 1989 folgte die Lösung der deutschen Frage durch die Wiedervereinigung beider Landesteile am 3. Oktober 1990.";

    Stopwatch sw = new Stopwatch();
    sw.Start();

    for (int i = 0; i < 100; i++) {
    huffman.Compress(test);
    //Console.WriteLine("[{0}] Compressed.", i);
    }

    sw.Stop();

    Console.WriteLine("Elapsed: {0} ms.", sw.ElapsedMilliseconds);
    }


    Ausgabe:

    Deine Variante: Elapsed: 6766 ms., Memory: 1.42Gb
    Meine gepostete Variante: Elapsed: 25 ms., Memory: 696.02kb

    MfG
    Geändert von Brainy (26.05.2020 um 13:18 Uhr)

  8. #6

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [C#] Huffman

    Ich habe da was entdeckt, was relevant ist:

    Wenn du den String "sich" compresst, kommt bei deiner Variante folgender Output:

    Code:
    0010000000 -> "si"
    10001001 -> "ch"
    Richtig aber:

    Code:
    01101110011 -> "sich"
    "sich" gibt es nämlich im Tree (01101110011). Deine Klasse findet zwar "si", aber "sic" (gibt es im Tree nicht) nicht. Deswegen wird "si" und danach "ch" aus der Definition genommen.

  9. The Following User Says Thank You to Brainy For This Useful Post:

    SeBi (27.05.2020)

  10. #7

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: [C#] Huffman

    Liegt das vielleicht daran, weil man einfach das nächstbeste Resultat nutzt, anstelle nach weiteren passenden Results zu suchen?

  11. #8

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [C#] Huffman

    Zitat Zitat von Bubble Gum Beitrag anzeigen
    Liegt das vielleicht daran, weil man einfach das nächstbeste Resultat nutzt, anstelle nach weiteren passenden Results zu suchen?
    "si" gibt es im Tree, aber "sic" nicht mehr. Daher bricht seine Methode dort ab (obwohl es "sich" gibt), geht um 1 zurück (wegen "c") und nimmt sich "si" aus dem Tree und macht danach weiter bei "c" und kommt schließlich bei "ch" an.

  12. #9

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: [C#] Huffman

    Ich glaube, deswegen spuckt mein Logger auch so einen mist

    Da sind einige Pakete dabei, die falsch sind.

Ähnliche Themen

  1. [Release] Huffman (Java Library)
    Von Flav im Forum Protokoll
    Antworten: 2
    Letzter Beitrag: 05.07.2013, 15:17
  2. [Java] Huffman
    Von Flav im Forum Sourcecode
    Antworten: 2
    Letzter Beitrag: 14.04.2012, 10:27
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.