Exemple #1
0
        public void Decode(string file)
        {
            var message          = MessageExtractor.ExtractMessage(file);
            var messageBeforeRLE = ApplyReverseRLETransformation(message);
            var decodedMessage   = BuildReverseBWTable(messageBeforeRLE);

            MessageFileWriter.WriteEncodedMessageToFile("output.txt", decodedMessage);
        }
Exemple #2
0
        public void Encode(string file)
        {
            var message = MessageExtractor.ExtractMessage(file);

            GetFrequencyTable(message);

            while (_frequencyTable.Count > 1)
            {
                AddNewLeaf();
            }

            SetCodes();

            var encodedMessage = MakeCode(message);

            MessageFileWriter.WriteEncodedMessageToFile("HuffmanEncoderOutput.txt", encodedMessage);
        }
Exemple #3
0
        public void Encode(string file)
        {
            var message        = MessageExtractor.ExtractMessage(file);
            var dictionary     = new Dictionary <string, int>();
            var encodedMessage = String.Empty;

            var newEntrylength = 1;

            for (int i = 0; i < message.Length; i += newEntrylength)
            {
                newEntrylength = 1;
                var newEntry = message.Substring(i, newEntrylength);
                while (dictionary.ContainsKey(newEntry))
                {
                    newEntrylength++;
                    newEntry = message.Substring(i, newEntrylength);
                }
                if (newEntrylength == 1)
                {
                    if (!dictionary.ContainsKey(newEntry))
                    {
                        dictionary.Add(newEntry, dictionary.Count + 1);
                        encodedMessage += "0" + newEntry;
                    }
                    else
                    {
                        newEntrylength++;
                        encodedMessage += dictionary[newEntry] + message[newEntrylength];
                        dictionary.Add(message.Substring(i, newEntrylength), dictionary.Count + 1);
                    }
                }
                else
                {
                    encodedMessage += dictionary[newEntry.Substring(0, newEntrylength - 1)] +
                                      newEntry.Substring(newEntrylength - 1, 1);
                    dictionary.Add(newEntry, dictionary.Count + 1);
                }
            }
            //test comment 2
            MessageFileWriter.WriteEncodedMessageToFile("output.txt", encodedMessage);
        }
Exemple #4
0
        public void Encode(string file)
        {
            var message         = MessageExtractor.ExtractMessage(file);
            var messageAfterBW  = ApplyBWTransformation(message);
            var messageAfterRLE = string.Empty;

            int increment = 0;

            for (int i = 0; i < message.Length; i += increment)
            {
                var currentCharacter = messageAfterBW.Key.Substring(i, 1);
                increment = 0;
                var nextCharacterPosition = i + increment + 1;
                if (nextCharacterPosition < message.Length)
                {
                    while (messageAfterBW.Key.Substring(nextCharacterPosition, 1) == currentCharacter)
                    {
                        increment++;
                        nextCharacterPosition++;
                        if (nextCharacterPosition >= message.Length)
                        {
                            break;
                        }
                    }
                }

                if (increment == 0)
                {
                    messageAfterRLE += currentCharacter;
                    increment++;
                }
                else
                {
                    increment++;
                    messageAfterRLE += currentCharacter + increment;
                }
            }
            messageAfterRLE += " " + messageAfterBW.Value;
            MessageFileWriter.WriteEncodedMessageToFile("output1.txt", messageAfterRLE);
        }
        public void Decode(string file)
        {
            var message        = MessageExtractor.ExtractMessage(file);
            var dictionary     = new Dictionary <int, string>();
            var decodedMessage = string.Empty;

            int symbolPosition = 0;
            int numberPosition = 0;
            int numberLength   = 0;
            int newNumber      = 0;

            while (symbolPosition <= message.Length - 1 && numberPosition <= message.Length - 2)
            {
                numberLength = 0;
                while (numberPosition + numberLength <= message.Length - 2 && char.IsDigit(message[numberPosition + numberLength]))
                {
                    numberLength++;
                }

                int.TryParse(message.Substring(numberPosition, numberLength), out newNumber);
                symbolPosition = numberPosition + numberLength;

                if (newNumber == 0)
                {
                    dictionary.Add(dictionary.Count + 1, message[symbolPosition].ToString());
                    decodedMessage += message[symbolPosition];
                }
                else
                {
                    dictionary.Add(dictionary.Count + 1, dictionary[newNumber] + message[symbolPosition]);
                    decodedMessage += dictionary[newNumber] + message[symbolPosition];
                }
                numberPosition = symbolPosition + 1;
            }

            MessageFileWriter.WriteEncodedMessageToFile("output.txt", decodedMessage);
        }