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_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_analyze_invalid(self): board = SudokuBoard() board.populate_from_brdstring(self.brd_nums[0].split('\n')) with self.assertRaises(InvalidBoard): board.analyze()
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