Example #1
0
 /// <summary>
 /// Retrieves a step-by-step solution from the solver for solving a puzzle.
 /// </summary>
 /// <param name="slvr"></param>
 private void OutputPuzzleSteps(SliderSolver slvr)
 {
     foreach (var move in slvr.GetAnswerMoves())
         richTextBoxOutput.AppendText(move + Environment.NewLine);
 }
Example #2
0
        /// <summary>
        /// Starts a given search type.
        /// </summary>
        /// <param name="lbl">The label output will be written to.</param>
        /// <param name="type">The search type to perform.</param>
        private void StartSearch(Label lbl, SearchType type)
        {
            var puzzle = CreatePuzzleFromInput();

            if (puzzle == null) return;

            solver = new SliderSolver(puzzle);
            solver.SolvePuzzle(type);

            if (solver.Result == null) lbl.Text = "No Result";

            UpdateLabelWithPuzzleResults(solver, lbl);
            if (type == SearchType.AStar)
                OutputPuzzleSteps(solver);
        }
Example #3
0
        /// <summary>
        /// Updates a given label control text with either an error message or the results from a given solver.
        /// </summary>
        /// <param name="slvr"></param>
        /// <param name="lbl"></param>
        private void UpdateLabelWithPuzzleResults(SliderSolver slvr, Label lbl)
        {
            if (slvr.Result == null)
            {
                lbl.Text = "Error!";
                return;
            }

            lbl.Text = "Starting: " + slvr.CurrentPuzzle.StartingNode.StateS
                + "\nSolution: " + slvr.Result.StateS
                + "\nDepth: " + $"{slvr.Result.Depth:n0}"
                + "\nNodes Expanded: " + $"{slvr.NodesExpanded:n0}"
                + "\nTime: " + $"{slvr.TimeSeconds:n4}";
        }