Esempio n. 1
0
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()
Esempio n. 2
0
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