예제 #1
0
        private static void GenerateBoundaryBits()
        {
            const int length    = 100000;
            const int runsCount = 100;

            using (var outputStream = File.Open(string.Format("D:\\statistics\\boundary_bits_{0}.txt", length), FileMode.Create))
                using (var output = new StreamWriter(outputStream))
                {
                    output.WriteLine("k | coeff");

                    var removeStrategy = new RemoveBorderStrategy();
                    var logger         = new ConsoleTextLengthLogger(length / 100);
                    var detectEqual    = false;

                    for (var k = 5; k <= 10; ++k)
                    {
                        Console.WriteLine("Conversion for k = {0}", k);
                        var text = new StringBuilder();

                        var e         = new RationalNumber(k, k - 1);
                        var generator = new CleverCharGenerator(text, k, e, detectEqual);
                        var detector  = new RepetitionDetector(text, e, detectEqual);

                        Calculate(runsCount, detector, length, removeStrategy, generator, logger, output);
                    }
                }
        }
예제 #2
0
        public void TestBoundary()
        {
            var sb = new StringBuilder();

            for (var i = 5; i <= 10; i++)
            {
                var charGenerator = new CleverCharGenerator(sb, i, new RationalNumber(i, i - 1), false);
                Assert.That(charGenerator.LastSymbols, Is.EqualTo(i - 2));
            }
        }
예제 #3
0
        private static void Generate3_7d4_plus()
        {
            using (var outputStream = File.Open("D:\\statistics\\binary_3_7d4+.txt", FileMode.Create))
                using (var output = new StreamWriter(outputStream))
                {
                    var Runs        = new[] { 100, 100, 100, 100, 100 };
                    var lengths     = new[] { 100, 200, 300, 400, 500 };
                    var e           = new RationalNumber(7, 4);
                    var detectEqual = false;

                    for (var i = 0; i < Runs.Length; ++i)
                    {
                        var length = lengths[i];
                        Console.WriteLine("Calculating conversion for length = {0}", length);
                        var text = new StringBuilder();

                        var generator      = new CleverCharGenerator(text, 3, e, detectEqual);
                        var detector       = new RepetitionDetector(text, e, detectEqual);
                        var removeStrategy = new RemoveBorderStrategy();

                        Calculate(Runs[i], detector, lengths[i], removeStrategy, generator, null, output);
                    }
                }
        }
예제 #4
0
        public void TestOther(int alphabetSize, int numerator, int denominator, bool detectEqual, int expectedLastSymols)
        {
            var charGenerator = new CleverCharGenerator(new StringBuilder(), alphabetSize, new RationalNumber(numerator, denominator), detectEqual);

            Assert.That(charGenerator.LastSymbols, Is.EqualTo(expectedLastSymols));
        }