示例#1
0
 static void Main(string[] args)
 {
     IGrid grid = new Grid(20, 20);
     new RecursiveDivision().Run(ref grid);
     Console.WriteLine(grid.ToString(false));
     Console.ReadKey();
 }
示例#2
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(19, 19);
            new HuntAndKill().Run(ref grid);

            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();
        }
示例#3
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(20, 20);
            new Kruskals().Run(ref grid);

            Console.WriteLine(grid.ToString(false));
            ////Console.WriteLine(grid.ToDebug());
            Console.ReadKey();
        }
示例#4
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(10, 10);
            new AldousBroder().Run(ref grid);

            Console.WriteLine(grid.ToString(false));
            ////Console.WriteLine(grid.ToDebug());
            Console.ReadKey();
        }
示例#5
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(6, 6);
            new SideWinder().Run(ref grid);

            Console.WriteLine(grid.ToString(true));
            ////Console.WriteLine(grid.ToDebug());
            Console.ReadKey();
        }
示例#6
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(10, 10);
            new BinaryTree().Run(ref grid);

            Console.WriteLine(grid.ToString(true));
            ////Console.WriteLine(grid.ToDebug());

            var deadends = ((Grid)grid).DeadEnds;
            Console.WriteLine($"There were {deadends.Count()} dead ends found.");
            Console.ReadKey();
        }
示例#7
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(10, 10);
            new RecursiveBacktracker().Run(ref grid);
            Console.WriteLine("No Braiding");
            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();

            ((Grid)grid).Braid(0.5); // braiding
            Console.WriteLine("With Braiding");
            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();
        }
示例#8
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(20, 20);
            new SimplifiedPrim().Run(ref grid);
            Console.WriteLine("Simplified Prim");
            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();

            grid = new Grid(20, 20);
            new TruePrim().Run(ref grid);
            Console.WriteLine("True Prim");
            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();
        }
示例#9
0
        static void Main(string[] args)
        {
            IGrid grid = new Grid(20, 20);
            new GrowingTree().Run(ref grid, RandomSelection);                  
            Console.WriteLine("Random Selection");
            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();

            grid = new Grid(20, 20);
            new GrowingTree().Run(ref grid, LastSelection);
            Console.WriteLine("Last Selection");
            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();

            grid = new Grid(20, 20);
            new GrowingTree().Run(ref grid, MixedSelection);
            Console.WriteLine("Mixed Selection");
            Console.WriteLine(grid.ToString(false));
            Console.ReadKey();
        }
示例#10
0
        static void Main(string[] args)
        {
            var algorithms = new IAlgorithms[] { new BinaryTree(), new SideWinder(),
                new AldousBroder(), new HuntAndKill(), new RecursiveBacktracker() };

            var tries = 100;
            var size = 20;

            var averages = new Dictionary<string, double>();

            foreach(var algorithm in algorithms)
            {
                var name = algorithm.GetType().Name;
                Console.WriteLine($"Running {name} algorithm");
                var deadendCounts = new List<int>();
                for(int i=0;i<tries;i++)
                {
                    IGrid grid = new Grid(size, size);
                    algorithm.Run(ref grid);
                    deadendCounts.Add(((Grid)grid).DeadEnds.Count());
                }

                var totalDeadends = deadendCounts.Sum();
                averages.Add(name, totalDeadends / deadendCounts.Count);
            }

            var totalCells = size * size;
            Console.WriteLine(" ");
            Console.WriteLine($"Average dead-ends per {size}x{size} maze ({totalCells} cells)");
            Console.WriteLine(" ");

            var sortedAlgorithm = averages.OrderByDescending(kvp => kvp.Value);
            foreach(var algorithm in sortedAlgorithm)
            {
                var percentage = (algorithm.Value * 100.0) / (size * size);
                Console.WriteLine($"{algorithm.Key}: {algorithm.Value}/{size*size} ({percentage}%)");
            }

            Console.ReadKey();
        }