예제 #1
0
        public PercolationStats(int N, int T)
        {
            var rnd = new Random();

            for (int k = 0; k < T; k++)
            {
                Console.WriteLine("Iteration {0}", k);
                _percolation = new Percolation(N);
                var countOpened = 0;

                do
                {
                    var i = rnd.Next(1, N + 1);
                    var j = rnd.Next(1, N + 1);

                    if (_percolation.IsOpen(i, j))
                        continue;
                    _percolation.Open(i, j);

                    countOpened++;

                } while (!_percolation.Percolates());

                Console.WriteLine("Count opened {0}", countOpened);

                _mean = (_mean + (double) countOpened/(N*N)) / 2;

                Console.WriteLine("mean {0}", _mean);
            }
        }
예제 #2
0
        public void Given_path_from_up_to_down_percolates_should_return_true()
        {
            // arrange
            var percolation = new Percolation(5);
            percolation.Open(2,3);
            percolation.Open(3,3);
            percolation.Open(4,3);
            percolation.Open(5,3);
            percolation.Open(1,3);

            // act
            var actual = percolation.Percolates();

            // assert
            Assert.IsTrue(actual);
        }
예제 #3
0
        public void Open_cells_without_path_from_up_to_down_should_return_false()
        {
            // arrange
            var percolation = new Percolation(5);
            percolation.Open(2, 2);
            percolation.Open(3, 3);
            percolation.Open(4, 4);
            percolation.Open(5, 5);
            percolation.Open(1, 1);

            // act
            var actual = percolation.Percolates();

            // assert
            Assert.IsFalse(actual);
        }