Возврат проблем в Python - PullRequest
0 голосов
/ 23 апреля 2020

Я довольно новичок в python и программировании в целом, и в качестве первого проекта я работаю над решением судоку: я использую возвратный путь, и он, кажется, работает, когда используется сам по себе, но я хочу включить его в более крупной программе.

Проблема в том, что когда я просто печатаю () сетку после ее решения, она работает просто отлично (согласно следующему примеру кода):

def solve(grid):
    for y in range(9):
        for x in range(9):
            if grid[y][x] == 0:
                for n in range(1,10):
                    if possible(grid,x,y,n):
                        grid[y][x] = n
                        solve(grid)
                        grid[y][x] = 0
                return
    print(numpy.matrix(grid))
    c = raw_input("More? [y/n]\n")
    if c == 'n':
        quit()
    else:
        pass
solve(grid)

Но когда я пытаюсь вернуть сетку вместо печати, она просто не работает и возвращает [[None]]:

def solve(grid):
    for y in range(9):
        for x in range(9):
            if grid[y][x] == 0:
                for n in range(1,10):
                    if possible(grid,x,y,n):
                        grid[y][x] = n
                        solve(grid)
                        grid[y][x] = 0
                return
    return grid
print(numpy.matrix(solve(grid)))

Есть идеи и объяснения по этому поводу? Как я могу просто вызвать функцию, присвоить ей свою сетку и заставить ее вернуть решенную сетку?

1 Ответ

0 голосов
/ 24 апреля 2020

Если первое условие оценивается как истинное:

if grid[y][x] == 0:

Функция разрешения возвращает None, а не grid.

...