private IEnumerator doSolve()
    {
        Stopwatch s = new Stopwatch();

        s.Start();
        List <string> longPath = PuzzleSolver.DepthFirstSearch(_state);

        s.Stop();
        print("DFS took " + s.ElapsedMilliseconds + " ms");
        print("States: " + longPath.Count);

        s.Reset();

        s.Start();
        List <string> path = PuzzleSolver.BreadthFirstSearch(_state);

        s.Stop();
        path.Reverse();
        print("BFS took " + s.ElapsedMilliseconds + " ms");
        print("States: " + path.Count);

        print("Start state: " + _state);
        StartCoroutine(animatePath(path));
        yield return(null);
    }
Example #2
0
        void TestRandomGeneratorWithString()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("Begin random generator puzzle solver").AppendLine();

            string state = PuzzleSolver.GenerateRandomSolvableState();

            sb.Append("Solving " + PuzzleSolver.PrintableState(state)).AppendLine();

            System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
            stopWatch.Start();
            List <string> path = PuzzleSolver.DepthFirstSearch(state);

            stopWatch.Stop();

            sb.Append("Depth first search took " + stopWatch.ElapsedMilliseconds + " ms").AppendLine();
            sb.Append("Depth first search path contains " + path.Count + " states").AppendLine();

            stopWatch.Reset();
            stopWatch.Start();
            path = PuzzleSolver.BreadthFirstSearch(state);
            stopWatch.Stop();

            sb.Append("Breadth first search took " + stopWatch.ElapsedMilliseconds + " ms").AppendLine();
            sb.Append("Breadth first search path contains " + path.Count + " states").AppendLine();

            sb.Append("Printing Solution");
            foreach (string p in path)
            {
                sb.Append(PuzzleSolver.PrintableState(p));
            }

            sb.Append("End puzzle solver").AppendLine();

            debugClass.WriteStringToFile(RandomGeneratorFile, sb.ToString());
        }