static void Main(string[] args) { IGrid grid = new Grid(20, 20); new RecursiveDivision().Run(ref grid); Console.WriteLine(grid.ToString(false)); Console.ReadKey(); }
static void Main(string[] args) { IGrid grid = new Grid(19, 19); new HuntAndKill().Run(ref grid); Console.WriteLine(grid.ToString(false)); Console.ReadKey(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }