Esempio n. 1
0
 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])
Esempio n. 2
0
 def test_board_load_from_csvfile(self):
     board = SudokuBoard()
     board.populate_from_csvfile(DATA_DIR / 'board1.csv')
     self._verify_board(board)
Esempio n. 3
0
 def test_possibles(self):
     board = SudokuBoard(self.board_nums[1])
     board.analyze()
     self.assertItemsEqual(board[4][5].possibles, [1, 3, 7, 9])
Esempio n. 4
0
 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])
Esempio n. 5
0
 def test_board_analyze_invalid(self):
     board = SudokuBoard()
     board.populate_from_brdstring(self.brd_nums[0].split('\n'))
     with self.assertRaises(InvalidBoard):
         board.analyze()
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)
Esempio n. 8
0
        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