Как вернуть numpy .array объект из функции? - PullRequest
0 голосов
/ 23 марта 2020

Эта программа использует возврат для решения судоку. В качестве входной матрицы используется объект numpy.array.

Программа:

import numpy as np
sudoku_matrix = np.array([[5, 3, 0, 0, 7, 0, 0, 0, 0],
                          [6, 0, 0, 1, 9, 5, 0, 0, 0],
                          [0, 9, 8, 0, 0, 0, 0, 6, 0],
                          [8, 0, 0, 0, 6, 0, 0, 0, 3],
                          [4, 0, 0, 8, 0, 3, 0, 0, 1],
                          [7, 0, 0, 0, 2, 0, 0, 0, 6],
                          [0, 6, 0, 0, 0, 0, 2, 8, 0],
                          [0, 0, 0, 4, 1, 9, 0, 0, 5],
                          [0, 0, 0, 0, 8, 0, 0, 7, 9]])
number_list = [x for x in range(1, 10)]


def possible_number(a, b, number):
    x1, y1 = (a // 3) * 3, (b // 3) * 3
    flag = False
    sub_array = sudoku_matrix[x1:(x1 + 3), y1:(y1 + 3)]
    if number not in sudoku_matrix[a]:
        if number not in sudoku_matrix[:, [b]]:
            for x in sub_array:
                if number in x:
                    flag = True
                    break
            if flag == False:
                return True
    return False


def solver():
    for a in range(0, 9):
        for b in range(0, 9):
            if sudoku_matrix[a][b] == 0:
                for number in number_list:
                    if possible_number(a, b, number):
                        sudoku_matrix[a][b] = number
                        solver()
                        sudoku_matrix[a][b] = 0
                return
    return sudoku_matrix 
    # print(sudoku_matrix)


if __name__ == '__main__':
    print(solver())

Если вы печатаете результат в solver(), он успешно печатается на стандартный вывод, но когда вы возвращаете sudoku_matrix, он возвращает None. Что я делаю не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...