как поменять печать в конце функции на возврат? - PullRequest
0 голосов
/ 23 февраля 2020

Я нашел код решателя судоку, однако мне нужна функция, чтобы вернуть сетку вместо ее печати. Любая идея, как?

import numpy as np

grid = [[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,0,0,7,0,0]
            ]

def checker(y,x,n):
    global grid
    for i in range(0,9):
        if grid[y][i] == n:
            return False
    for i in range(0,9):
        if grid[i][x] == n:
            return False
    x0 = (x//3)*3
    y0 = (y//3)*3
    for i in range(0,3):
        for j in range(0,3):
            if grid[y0+i][x0+j] == n:
                return False
    return True

def solver(grid):
    for y in range(9):
        for x in range(9):
            if grid[y][x] == 0:
                for n in range(1,10):
                    if checker(y,x,n):
                        grid[y][x] = n
                        solver(grid)
                        grid[y][x] = 0
                return
    print(np.matrix(grid))
    input("More?")

solver(grid)

Эта функция дает вам правильное решение, однако, я хотел бы вызвать эту функцию в моем другом проекте, но я не могу, так как вывод является печать, а не сетка сама.

Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2020

В функции "def solver" измените печать на возврат. Затем вызовите функцию типа a = solver (grid), чтобы возвращаемое значение сохранялось в переменной a.

...