Esempio n. 1
0
        public void SolvePuzzleByBFS()
        {
            // Si está correcto, no lo resuelvo (o lo puedo llamar igualmente y que me devuelva una solución vacía, ok?
            //if (!puzzle.IsInDefaultOrder()) {       }
            // El resolutor ya está construido porque no requiere nada
            time = Time.realtimeSinceStartup;
            List <Operator> operators = solver.Solve(puzzle, SlidingPuzzleSolver.Strategy.BFS);

            time = Time.realtimeSinceStartup - time;
            // Crear una estructura para las metrics, algo menos libre... con campos
            Metrics metrics = solver.GetMetrics();

            ShowSolution(operators, metrics);
        }
Esempio n. 2
0
        // Se crea el resolutor con la estrategia DFS y se resuelve el problema
        public void SolvePuzzleByDFS()
        {
            // Si está ordenado, podría optar por no hacer nada... aunque llamaré igualmente y espero que devuelva la solución vacía
            solver = new SlidingPuzzleSolver(rows, columns);
            // El resolutor ya está construido porque no requiere nada

            time   = Time.realtimeSinceStartup;
            memory = SystemInfo.systemMemorySize; // Se podría sumar a la parte gráfica para tener la ocupación real en memoria (SystemInfo.graphicsMemorySize)
            List <Operator> operators = solver.Solve(puzzle, SlidingPuzzleSolver.Strategy.DFS);

            time    = Time.realtimeSinceStartup - time;
            memory  = SystemInfo.systemMemorySize - memory; // No tiene mucho sentido hacerlo aquí, porque ya se habrá liberado la mmemoria, habría que escoger el punto álgido (máximo de memoria utilizada)
            metrics = solver.GetMetrics().ToString();
            ShowSolution(operators);
        }