def test_3_sudoku_of_9(self): board = [ [9, 0, 5, 0, 0, 0, 0, 0, 8], [4, 0, 0, 5, 7, 0, 1, 0, 6], [0, 2, 7, 6, 0, 0, 0, 4, 0], [0, 9, 6, 0, 0, 3, 5, 1, 2], [7, 0, 4, 0, 1, 0, 3, 0, 0], [2, 1, 0, 9, 8, 0, 0, 0, 4], [0, 8, 1, 0, 0, 4, 0, 9, 0], [3, 0, 0, 8, 0, 0, 0, 5, 1], [0, 0, 2, 0, 0, 7, 0, 6, 0] ] assert ex8.solve_sudoku(board) is True checking_full_sud(board) not_changed_save_places([ [9, 0, 5, 0, 0, 0, 0, 0, 8], [4, 0, 0, 5, 7, 0, 1, 0, 6], [0, 2, 7, 6, 0, 0, 0, 4, 0], [0, 9, 6, 0, 0, 3, 5, 1, 2], [7, 0, 4, 0, 1, 0, 3, 0, 0], [2, 1, 0, 9, 8, 0, 0, 0, 4], [0, 8, 1, 0, 0, 4, 0, 9, 0], [3, 0, 0, 8, 0, 0, 0, 5, 1], [0, 0, 2, 0, 0, 7, 0, 6, 0] ], board)
def test_2_sudoku_of_4(): board = [[3, 0, 4, 0], [0, 1, 0, 3], [2, 3, 0, 0], [1, 0, 0, 2]] assert ex8.solve_sudoku(board) is True checking_full_sud(board) not_changed_save_places( [[3, 0, 4, 0], [0, 1, 0, 3], [2, 3, 0, 0], [1, 0, 0, 2]], board)
def test_2_sudoku_of_16(): board = [[0, 15, 0, 1, 0, 2, 10, 14, 12, 0, 0, 0, 0, 0, 0, 0], [0, 6, 3, 16, 12, 0, 8, 4, 14, 15, 1, 0, 2, 0, 0, 0], [14, 0, 9, 7, 11, 3, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 13, 2, 12, 0, 0, 0, 0, 6, 0, 0, 0, 0, 15, 0, 0], [0, 0, 0, 0, 14, 1, 11, 7, 3, 5, 10, 0, 0, 8, 0, 12], [3, 16, 0, 0, 2, 4, 0, 0, 0, 14, 7, 13, 0, 0, 5, 15], [11, 0, 5, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 6, 0, 0], [0, 0, 0, 0, 13, 0, 16, 5, 15, 0, 0, 12, 0, 0, 0, 0], [0, 0, 0, 0, 9, 0, 1, 12, 0, 8, 3, 10, 11, 0, 15, 0], [2, 12, 0, 11, 0, 0, 14, 3, 5, 4, 0, 0, 0, 0, 9, 0], [6, 3, 0, 4, 0, 0, 13, 0, 0, 11, 9, 1, 0, 12, 16, 2], [0, 0, 10, 9, 0, 0, 0, 0, 0, 0, 12, 0, 8, 0, 6, 7], [12, 8, 0, 0, 16, 0, 0, 10, 0, 13, 0, 0, 0, 5, 0, 0], [5, 0, 0, 0, 3, 0, 4, 6, 0, 1, 15, 0, 0, 0, 0, 0], [0, 9, 1, 6, 0, 14, 0, 11, 0, 0, 2, 0, 0, 0, 10, 8], [0, 14, 0, 0, 0, 13, 9, 0, 4, 12, 11, 8, 0, 0, 2, 0]] assert ex8.solve_sudoku(board) is True assert board == [[8, 15, 11, 1, 6, 2, 10, 14, 12, 7, 13, 3, 16, 9, 4, 5], [10, 6, 3, 16, 12, 5, 8, 4, 14, 15, 1, 9, 2, 11, 7, 13], [14, 5, 9, 7, 11, 3, 15, 13, 8, 2, 16, 4, 12, 10, 1, 6], [4, 13, 2, 12, 1, 9, 7, 16, 6, 10, 5, 11, 3, 15, 8, 14], [9, 2, 6, 15, 14, 1, 11, 7, 3, 5, 10, 16, 4, 8, 13, 12], [3, 16, 12, 8, 2, 4, 6, 9, 11, 14, 7, 13, 10, 1, 5, 15], [11, 10, 5, 13, 8, 12, 3, 15, 1, 9, 4, 2, 7, 6, 14, 16], [1, 4, 7, 14, 13, 10, 16, 5, 15, 6, 8, 12, 9, 2, 3, 11], [13, 7, 16, 5, 9, 6, 1, 12, 2, 8, 3, 10, 11, 14, 15, 4], [2, 12, 8, 11, 7, 16, 14, 3, 5, 4, 6, 15, 1, 13, 9, 10], [6, 3, 14, 4, 10, 15, 13, 8, 7, 11, 9, 1, 5, 12, 16, 2], [15, 1, 10, 9, 4, 11, 5, 2, 13, 16, 12, 14, 8, 3, 6, 7], [12, 8, 4, 3, 16, 7, 2, 10, 9, 13, 14, 6, 15, 5, 11, 1], [5, 11, 13, 2, 3, 8, 4, 6, 10, 1, 15, 7, 14, 16, 12, 9], [7, 9, 1, 6, 15, 14, 12, 11, 16, 3, 2, 5, 13, 4, 10, 8], [16, 14, 15, 10, 5, 13, 9, 1, 4, 12, 11, 8, 6, 7, 2, 3]]
def test_2_sudoku_of_9(self): board = [ [0, 0, 9, 0, 2, 0, 0, 3, 6], [0, 8, 5, 0, 0, 0, 0, 1, 7], [0, 0, 0, 0, 5, 7, 2, 0, 4], [5, 0, 0, 0, 0, 2, 0, 6, 0], [0, 6, 4, 3, 0, 8, 1, 2, 0], [0, 7, 0, 1, 0, 0, 0, 0, 9], [3, 0, 1, 7, 8, 0, 0, 0, 0], [4, 9, 0, 0, 0, 0, 8, 5, 0], [6, 2, 0, 0, 3, 0, 4, 0, 0] ] assert ex8.solve_sudoku(board) is True checking_full_sud(board) not_changed_save_places([ [0, 0, 9, 0, 2, 0, 0, 3, 6], [0, 8, 5, 0, 0, 0, 0, 1, 7], [0, 0, 0, 0, 5, 7, 2, 0, 4], [5, 0, 0, 0, 0, 2, 0, 6, 0], [0, 6, 4, 3, 0, 8, 1, 2, 0], [0, 7, 0, 1, 0, 0, 0, 0, 9], [3, 0, 1, 7, 8, 0, 0, 0, 0], [4, 9, 0, 0, 0, 0, 8, 5, 0], [6, 2, 0, 0, 3, 0, 4, 0, 0] ], board)
def test_1_sudoku_of_9(self): board = [ [0, 5, 2, 9, 0, 1, 3, 6, 0], [0, 8, 0, 0, 7, 0, 0, 0, 2], [0, 0, 4, 0, 0, 0, 0, 7, 1], [4, 1, 0, 0, 5, 9, 0, 0, 0], [0, 2, 0, 0, 6, 0, 0, 5, 0], [0, 0, 0, 2, 3, 0, 0, 8, 4], [5, 7, 0, 0, 0, 0, 6, 0, 0], [2, 0, 0, 0, 9, 0, 0, 1, 0], [0, 6, 9, 7, 0, 2, 8, 4, 0] ] assert ex8.solve_sudoku(board) is True checking_full_sud(board) not_changed_save_places([ [0, 5, 2, 9, 0, 1, 3, 6, 0], [0, 8, 0, 0, 7, 0, 0, 0, 2], [0, 0, 4, 0, 0, 0, 0, 7, 1], [4, 1, 0, 0, 5, 9, 0, 0, 0], [0, 2, 0, 0, 6, 0, 0, 5, 0], [0, 0, 0, 2, 3, 0, 0, 8, 4], [5, 7, 0, 0, 0, 0, 6, 0, 0], [2, 0, 0, 0, 9, 0, 0, 1, 0], [0, 6, 9, 7, 0, 2, 8, 4, 0] ], board)
def test_sudoku_of_empty_9(): board = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]] assert ex8.solve_sudoku(board) is True checking_full_sud(board)
def test_2_sudoku_of_bad_9(): board = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 2, 3, 4, 0, 6, 7, 8, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 9, 0, 0, 0, 5], [0, 0, 0, 0, 0, 0, 0, 0, 9], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]] assert ex8.solve_sudoku(board) is False not_changed_at_all( [[0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 2, 3, 4, 0, 6, 7, 8, 0], [0, 0, 0, 0, 5, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 9, 0, 0, 0, 5], [0, 0, 0, 0, 0, 0, 0, 0, 9], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]], board)
def test_1_sudoku_of_bad_9(): board = [[6, 5, 2, 9, 0, 1, 3, 0, 0], [0, 8, 0, 6, 7, 0, 0, 0, 2], [0, 0, 4, 0, 0, 6, 0, 7, 1], [4, 1, 0, 0, 5, 9, 0, 6, 0], [0, 2, 0, 0, 6, 0, 0, 5, 0], [0, 0, 6, 2, 3, 0, 0, 8, 4], [5, 7, 0, 0, 0, 0, 6, 0, 0], [2, 0, 0, 0, 9, 0, 0, 1, 0], [0, 6, 9, 7, 0, 2, 8, 4, 0]] assert ex8.solve_sudoku(board) is False not_changed_at_all( [[6, 5, 2, 9, 0, 1, 3, 0, 0], [0, 8, 0, 6, 7, 0, 0, 0, 2], [0, 0, 4, 0, 0, 6, 0, 7, 1], [4, 1, 0, 0, 5, 9, 0, 6, 0], [0, 2, 0, 0, 6, 0, 0, 5, 0], [0, 0, 6, 2, 3, 0, 0, 8, 4], [5, 7, 0, 0, 0, 0, 6, 0, 0], [2, 0, 0, 0, 9, 0, 0, 1, 0], [0, 6, 9, 7, 0, 2, 8, 4, 0]], board)
def test_4_sudoku_of_9(): board = [[0, 0, 0, 7, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 3, 0, 2, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 6], [0, 0, 0, 5, 0, 9, 0, 0, 0], [0, 0, 0, 0, 0, 0, 4, 1, 8], [0, 0, 0, 0, 8, 1, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0, 5, 0], [0, 4, 0, 0, 0, 0, 3, 0, 0]] assert ex8.solve_sudoku(board) is True checking_full_sud(board) not_changed_save_places( [[0, 0, 0, 7, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 3, 0, 2, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 6], [0, 0, 0, 5, 0, 9, 0, 0, 0], [0, 0, 0, 0, 0, 0, 4, 1, 8], [0, 0, 0, 0, 8, 1, 0, 0, 0], [0, 0, 2, 0, 0, 0, 0, 5, 0], [0, 4, 0, 0, 0, 0, 3, 0, 0]], board)
def test_2_sudoku_of_bad_4(self): board = [ [1, 2, 3, 0], [0, 0, 0, 4], [0, 0, 0, 0], [0, 0, 0, 0] ] assert ex8.solve_sudoku(board) is False not_changed_at_all([ [1, 2, 3, 0], [0, 0, 0, 4], [0, 0, 0, 0], [0, 0, 0, 0] ], board)
def test_1_sudoku_of_bad_4(self): board = [ [1, 2, 3, 0], [3, 0, 0, 4], [4, 0, 0, 2], [2, 1, 4, 3] ] assert ex8.solve_sudoku(board) is False not_changed_at_all([ [1, 2, 3, 0], [3, 0, 0, 4], [4, 0, 0, 2], [2, 1, 4, 3] ], board)
def test_1_sudoku_of_4(self): board = [ [1, 2, 3, 4], [3, 0, 0, 1], [4, 0, 0, 2], [2, 1, 4, 3] ] assert ex8.solve_sudoku(board) is True checking_full_sud(board) not_changed_save_places([ [1, 2, 3, 4], [3, 0, 0, 1], [4, 0, 0, 2], [2, 1, 4, 3] ], board)
def test_sudoku_of_fill_one(): board = [[1]] assert ex8.solve_sudoku(board) is True assert board == [[1]]
col_sublist = [] for row in range(len(board)): col_sublist.append(board[row][col]) col_lst.append(col_sublist) return col_lst def square_board(board, row, col): square_len = int(math.sqrt(len(board))) square_board = list() start_row = square_len * (row // square_len) start_col = square_len * (col // square_len) for row in board[start_row:start_row + square_len]: square_board += (row[start_col:start_col + square_len]) return square_board def did_not_change_at_all(start_board, final_board): assert start_board == final_board def did_not_change_start_numbers(start_board, final_board): for row in range(len(start_board)): for col in range(len(start_board)): if start_board[row][col] != 0: assert start_board[row][col] == final_board[row][col] board = [[4, 0, 0, 0], [0, 2, 4, 3], [3, 0, 0, 0], [2, 0, 3, 0]] ex8.solve_sudoku(board) check_solution(board)
def test_sudoku_of_empty_one(self): board = [[0]] assert ex8.solve_sudoku(board) is True assert board == [[1]]