Пример #1
0
        public void SolveIncompleteBoards(string[] rowStrings, int iterations)
        {
            IEnumerable <(ushort, ushort, int)> coll = rowStrings.Select(rowString => rowString.ToRowWithMaskAndSize());

            ushort[] rows  = coll.Select(trio => trio.Item1).ToArray();
            ushort[] masks = coll.Select(trio => trio.Item2).ToArray();
            int      size  = coll.First().Item3;

            var printer = new BoardPrinter(this.output);

            printer.PrintBoard(rows, masks, size);
            var rowChecker  = new BinairoRowChecker(this.validRows, size);
            var flipper     = new MatrixFlipper();
            var checker     = new BinairoBoardChecker(rowChecker, flipper, size);
            var rowSolver   = new BinairoRowSolver(size);
            var boardSolver = new DuplicateRowSolver(size, new BitCounter());
            var solver      = new BinairoBoardSolver(checker, rowSolver, boardSolver, flipper, size)
            {
                Output     = printer,
                Iterations = iterations
            };
            //rowSolver.RowChecker = rowChecker;
            //rowSolver.Output = printer;
            bool solved = solver.Solve(rows, masks);

            Assert.True(solved);
        }
Пример #2
0
 public void RecognizeCompleteBoard()
 {
     for (int size = 6; size < 16; size += 2)
     {
         ushort   mask   = size.ToMask();
         ushort[] masks  = Enumerable.Repeat(mask, size).ToArray();
         var      solver = new BinairoBoardSolver(null, null, null, null, size);
         Assert.True(solver.BoardIsComplete(masks));
     }
 }