Beispiel #1
0
        public PartialViewResult GetBoardSolution(string board, string wordLengths)
        {
            ModelState.Clear();

            var solutionModel = new PuzzleSolutionModel();

            string[] splitLengths = wordLengths.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            int dummy;

            if (splitLengths.Any(sl => !Int32.TryParse(sl, out dummy)))
            {
                solutionModel.ErrorMessage = "Word lengths must be comma separated numbers.";
                return(PartialView("_BoardSolutionView", solutionModel));
            }

            int[]  lengths = splitLengths.Select(w => Convert.ToInt32(w)).ToArray();
            string message = PuzzlePlant.IsValidPuzzle(board, lengths);

            if (!string.IsNullOrWhiteSpace(message))
            {
                solutionModel.ErrorMessage = message;
                return(PartialView("_BoardSolutionView", solutionModel));
            }

            IBoardSolver   boardSolver = Plant.Plant.BoardSolver;
            Puzzle         puzzle      = PuzzlePlant.BuildPuzzle(board, lengths);
            PuzzleSolution solution    = boardSolver.SolvePuzzle(puzzle);

            solutionModel.Words = solution.Solutions.Select(words => words.Select(w => w.Letters).ToList()).ToList();
            return(PartialView("_BoardSolutionView", solutionModel));
        }
 public BinairoBoardSolver(BinairoBoardChecker checker, BinairoRowSolver rowSolver, IBoardSolver boardSolver, MatrixFlipper flipper, int size)
 {
     this.completeMask = size.ToMask();
     this.size         = size;
     this.checker      = checker;
     this.rowSolver    = rowSolver;
     this.boardSolver  = boardSolver;
     this.flipper      = flipper;
 }
Beispiel #3
0
 public Sudoku(IBoardSolver solver, IBoardValidator boardValidator)
 {
     _solver         = solver;
     _boardValidator = boardValidator;
 }