Exemplo n.º 1
0
        public static IList <byte> BWT(IList <byte> bytes, int initialStringIndex)
        {
            var bwt           = new BurrowsWheelerTransform(bytes);
            var reversedBytes = bwt.InverseTransform(initialStringIndex);

            return(reversedBytes);
        }
Exemplo n.º 2
0
        public static BurrowsWheelerResult BWT(IList <byte> bytes)
        {
            var bwt       = new BurrowsWheelerTransform(bytes);
            var bwtResult = bwt.DirectTransform();

            return(bwtResult);
        }
 public static byte[] Decompress(byte[] data)
 {
     byte[] dhf  = HuffmanCoding.Decode(data);
     byte[] imtf = MoveToFrontCoding.Decode(dhf);
     byte[] ibw  = BurrowsWheelerTransform.InverseTransform(imtf);
     return(ibw);
 }
 public static byte[] Compress(byte[] Data)
 {
     byte[] bw  = BurrowsWheelerTransform.Transform(Data);
     byte[] mtf = MoveToFrontCoding.Encode(bw);
     byte[] hf  = HuffmanCoding.Encode(mtf);
     return(hf);
 }
Exemplo n.º 5
0
        public void Decode(string encoded, int index, string expected)
        {
            var bwt = new BurrowsWheelerTransform();

            var result = bwt.Decode(encoded, index);

            Assert.AreEqual(expected, result);
        }
        public void TestInverseTransform()
        {
            byte[] output1 = BurrowsWheelerTransform.InverseTransform(STR_TRANSFORMED_BYTEARR1);
            Assert.AreEqual <String>(STR1, ByteArrToString(output1));

            byte[] output2 = BurrowsWheelerTransform.InverseTransform(STR_TRANSFORMED_BYTEARR2);
            Assert.AreEqual <String>(STR2, ByteArrToString(output2));
        }
        public void TestTransform()
        {
            byte[] output1 = BurrowsWheelerTransform.Transform(StringToByteArr(STR1));
            Assert.AreEqual <String>(ByteArrToString(STR_TRANSFORMED_BYTEARR1), ByteArrToString(output1));

            byte[] output2 = BurrowsWheelerTransform.Transform(StringToByteArr(STR2));
            Assert.AreEqual <String>(ByteArrToString(STR_TRANSFORMED_BYTEARR2), ByteArrToString(output2));
        }
Exemplo n.º 8
0
        public void Encode(string input, string expectedString, int expectedIndex)
        {
            var bwt = new BurrowsWheelerTransform();

            var(encoded, index) = bwt.Encode(input);

            Assert.AreEqual(expectedString, encoded);
            Assert.AreEqual(expectedIndex, index);
        }
Exemplo n.º 9
0
        public void RandomEncodeDecode()
        {
            var bwt         = new BurrowsWheelerTransform();
            var random      = new Randomizer();
            var inputString = random.GetString();

            var(encoded, index) = bwt.Encode(inputString);
            var result = bwt.Decode(encoded, index);

            Assert.AreEqual(inputString, result);
        }
Exemplo n.º 10
0
        public void TransformReturnsFromFemFladeFloedeboller()
        {
            var input    = "^fem flade flødeboller på et fladt flødebolle fad|";
            var expected = "åemtter|llfeeaøøaaldddfl  ^    ffllooffebb eeddpll"; //Has not been validated
            var bwt      = new BurrowsWheelerTransform();

            var inArr  = ByteMethods.StringToByteArray(input);
            var output = bwt.Transform(inArr);
            var actual = ByteMethods.ByteArrayToString(output);

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 11
0
        public void TransformReturnsBNNAAAFromBANANA()
        {
            byte[] input =
            { (byte)'^', (byte)'B', (byte)'A', (byte)'N', (byte)'A', (byte)'N', (byte)'A', (byte)'|' };
            byte[] expected =
            { (byte)'B', (byte)'N', (byte)'N', (byte)'^', (byte)'A', (byte)'A', (byte)'|', (byte)'A' };
            var bwt = new BurrowsWheelerTransform();

            var result = bwt.Transform(input);

            Assert.AreEqual(expected, result);
        }
Exemplo n.º 12
0
        public void TransformFromText1()
        {
            var input =
                "^This is some small file, that noone wants to read because it is boring. Therefore it has been hidden here. Please do not share with any hostile intelligence.|";
            var expected =
                "..hdsseltnnyetseetootes,seeeege  ^|emw hhehc   enaid slrsmnrlrcrlbbrtdeghh enits t T T hltfr  h   wliiPlaesoeeeoi  iaadtsonfbhnoae eoaiiitau   oiiaoni s na  n."; //Has not been validated
            var bwt = new BurrowsWheelerTransform();

            var inArr  = ByteMethods.StringToByteArray(input);
            var output = bwt.Transform(inArr);
            var actual = ByteMethods.ByteArrayToString(output);

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 13
0
        static void Main(string[] args)
        {
            Console.WriteLine("Generating random text with 10,000,000 characters");
            string text = BlackBox.GenerateCode(10000000, BlackBox.CodeGeneratorType.All);

            Console.WriteLine("Building index of text with 10,000,000 characters this should take ~ 1min...");
            var d1 = DateTime.Now;
            BurrowsWheelerTransform bwt = text;

            Console.Write("Building index completed {0} min(s)\r\n\r\nType a phrase to search:", DateTime.Now.Subtract(d1).TotalMinutes);

            string value = null;

            while ("exit" != (value = Console.ReadLine()))
            {
                Console.WriteLine("Searching for {0}...", value);
                d1 = DateTime.Now;
                var results = bwt.Find(value);
                Console.Write("Search completed {0} sec\r\n", DateTime.Now.Subtract(d1).TotalSeconds);
                results.ToList().ForEach(i =>
                {
                    var item = text.Substring(i, value.Length);
                    Debug.Assert(item == value);
                    Console.WriteLine("{0} {1}", i, item);
                });
                Console.WriteLine("{0} results\r\n", results.Count());

                int y = 0;
                d1 = DateTime.Now;
                while (y < text.Length && y > -1)
                {
                    y = text.IndexOf(value, y + (value.Length - 1), StringComparison.Ordinal);
                    Console.WriteLine(y);
                }
                Console.Write("IndexOf completed {0} sec\r\n", DateTime.Now.Subtract(d1).TotalSeconds);

                Console.Write("Type a phrase to search:");
            }

            Console.WriteLine("Serializing index...");
            d1 = DateTime.Now;
            BinaryFormatter b = new BinaryFormatter();

            using (var file = System.IO.File.Create(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "ConsoleApplication2.bin")))
            {
                b.Serialize(file, bwt);
                file.Close();
            }
            Console.WriteLine("Serialization completed {0} sec\r\n", DateTime.Now.Subtract(d1).TotalSeconds);

            Console.WriteLine("Deserializing index...");
            d1 = DateTime.Now;
            using (var file = System.IO.File.Open(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "ConsoleApplication2.bin"), FileMode.Open))
            {
                bwt = (BurrowsWheelerTransform)b.Deserialize(file);
                file.Close();
            }

            Console.Write("Deserialization completed {0} sec\r\nType a phrase to search:", DateTime.Now.Subtract(d1).TotalSeconds);
            while ("exit" != (value = Console.ReadLine()))
            {
                Console.WriteLine("Searching for {0}...", value);
                d1 = DateTime.Now;
                var results = bwt.Find(value);
                Console.Write("Search completed {0} sec\r\n", DateTime.Now.Subtract(d1).TotalSeconds);
                results.ToList().ForEach(i =>
                {
                    var item = text.Substring(i, value.Length);
                    Debug.Assert(item == value);
                    Console.WriteLine("{0} {1}", i, item);
                });
                Console.WriteLine("{0} results\r\n", results.Count());
                Console.Write("Type a phrase to search:");
            }

            Console.ReadLine();
        }