public void Decode(string file) { var message = MessageExtractor.ExtractMessage(file); var messageBeforeRLE = ApplyReverseRLETransformation(message); var decodedMessage = BuildReverseBWTable(messageBeforeRLE); MessageFileWriter.WriteEncodedMessageToFile("output.txt", decodedMessage); }
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); }
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); }
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); }