private static void Main() { var pieces = Piece.RealPieces; var solver = new SolverUsingDlx(pieces); var solutions = solver.FindAllSolutions().ToList(); solutions = RemoveDuplicateSolutions(solver, solutions); var consolePrintTarget = new ConsolePrintTarget(); var boardPrinter = new BoardPrinter(consolePrintTarget); Console.WriteLine("Found {0} solutions", solutions.Count()); foreach (var solution in solutions) { var solutionAsArray = solution.ToArray(); var board = solver.PopulateBoardWithSolution(solutionAsArray); Console.WriteLine(); boardPrinter.Print(board); Console.WriteLine(); solver.WriteSolution(solutionAsArray); } solver.WritePropertyList("8x8_Pieces1.plist", pieces, solutions); }
private static void SolveBoard(int boardSize, Piece[] pieces) { var board = new Board(boardSize); var solver = new Solver(); var pieceFeeder = new PieceFeeder(pieces); var solutionDetails = solver.SolvePuzzle(board, pieceFeeder); if (solutionDetails.Solved) { var consolePrintTarget = new ConsolePrintTarget(); var boardPrinter = new BoardPrinter(consolePrintTarget); Console.WriteLine("Solution found after {0} iterations.", solutionDetails.Iterations); PrintPermutation(solutionDetails.Solution); Console.WriteLine(); boardPrinter.Print(board); } else { Console.WriteLine("Failed to find a solution after {0} iterations.", solutionDetails.Iterations); } Console.WriteLine(); }