def test_set_possibles(self): board = SudokuBoard() board.populate_from_brdstring(self.brd_nums[2].split('\n')) board.reset_possibles() board.set_possibles() self.assertEqual(board[0][0].possibles, [2]) self.assertEqual(board[0][1].possibles, [8]) self.assertEqual(board[0][2].possibles, [3]) self.assertEqual(board[0][3].possibles, [1]) self.assertEqual(board[0][5].possibles, [4]) self.assertEqual(board[0][6].possibles, [6]) self.assertEqual(board[0][7].possibles, [7]) self.assertEqual(board[0][8].possibles, [5]) self.assertEqual(board[1][0].possibles, [9]) self.assertEqual(board[1][1].possibles, [6]) self.assertEqual(board[1][2].possibles, [4]) self.assertEqual(board[3][2].possibles, [1]) self.assertEqual(board[6][3].possibles, [4])
def test_board_load_from_csvfile(self): board = SudokuBoard() board.populate_from_csvfile(DATA_DIR / 'board1.csv') self._verify_board(board)
def test_possibles(self): board = SudokuBoard(self.board_nums[1]) board.analyze() self.assertItemsEqual(board[4][5].possibles, [1, 3, 7, 9])
def test_a_board(self): board = SudokuBoard(self.board_nums[0]) self.assertEqual(board[4].row(1), [7, 5, 3]) self.assertEqual(board[7].col(2), [2, 8, 4]) self.assertEqual(board.row(5, unset_cells=False), [3, 4, 6]) self.assertEqual(board.col(5, unset_cells=False), [2, 3, 4, 6, 7, 8])
def test_board_analyze_invalid(self): board = SudokuBoard() board.populate_from_brdstring(self.brd_nums[0].split('\n')) with self.assertRaises(InvalidBoard): board.analyze()
def test_board_load_from_brdstring(self): board = SudokuBoard() with open(DATA_DIR / 'board1.brd', 'r') as brdfile: brdstring = brdfile.readlines() board.populate_from_brdstring(brdstring) self._verify_board(board)
def test_board_load_from_csvstring(self): board = SudokuBoard() with open(DATA_DIR / 'board1.csv', 'rb') as csvfile: csvstring = csvfile.read() board.populate_from_csvstring(csvstring) self._verify_board(board)
return None, False, visited, count + 1 if board.solved(): return board, True, visited, count + 1 for board_to_try in board.next_moves(): _debug_print("TRYING BOARD:") _debug_print(board_to_try) board_result, solved, visited, count = solve_board(board_to_try, False, visited, count + 1) if board_result is None: # Dead-end. continue elif solved: return board_result, True, visited, count # No solution was found. _debug_print("NO SOLUTION ON THIS PATH:") _debug_print(board) _debug_print("ADDED TO VISITED:") _debug_print(board) visited.add(board) return None, False, visited, count + 1 for test_board in boards_to_solve: board = SudokuBoard() board.populate_from_brdstring(test_board.split('\n')) visited = set() print "------------------------------" print "Original board:" print board solved_board, solved, visited, count = solve_board(copy.deepcopy(board), False, visited, 0) print "Solved board:" print solved_board