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); }
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)); } }