def test_get_box_from_cell_with_valid(): sudoku_board = Sudoku(boards.unsolved_easy) box1 = sudoku_board.get_box_from_cell(0, 0) expected_box1 = array([[5, 3, 0], [6, 0, 0], [0, 9, 8]]) assert (box1 == expected_box1).all() box2 = sudoku_board.get_box_from_cell(1, 3) expected_box2 = array([[0, 7, 0], [1, 9, 5], [0, 0, 0]]) assert (box2 == expected_box2).all() box6 = sudoku_board.get_box_from_cell(3, 8) expected_box6 = array([[0, 0, 3], [0, 0, 1], [0, 0, 6]]) assert (box6 == expected_box6).all() box7 = sudoku_board.get_box_from_cell(8, 2) expected_box7 = array([[0, 6, 0], [0, 0, 0], [0, 0, 0]]) assert (box7 == expected_box7).all() box9 = sudoku_board.get_box_from_cell(6, 6) expected_box9 = array([[2, 8, 0], [0, 0, 5], [0, 7, 9]]) assert (box9 == expected_box9).all()
def get_possible_cell_values(sudoku: sudoku_board.Sudoku, row: int, column: int) -> List[int]: all_values = [1, 2, 3, 4, 5, 6, 7, 8, 9] possible_values = [] if sudoku.board_numbers[row][column] != 0: possible_values.append(sudoku.board_numbers[row][column]) else: row_values = sudoku.board_numbers[row, :].flatten() column_values = sudoku.board_numbers[:, column].flatten() box_values = sudoku.get_box_from_cell(row, column).flatten() used_values = unique( list(filter(non_zero, chain(row_values, column_values, box_values)))) for value in all_values: if value not in used_values: possible_values.append(value) return possible_values