Algorithm for solving Sudoku

后端 未结 10 595
忘了有多久
忘了有多久 2020-12-02 08:13

I want to write a code in python to solve a sudoku puzzle. Do you guys have any idea about a good algorithm for this purpose. I read somewhere in net about a algorithm which

10条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-02 08:55

    a short attempt to achieve same algorithm using backtracking:

    def solve(sudoku):
        #using recursion and backtracking, here we go.
        empties = [(i,j) for i in range(9) for j in range(9) if sudoku[i][j] == 0]
        predict = lambda i, j: set(range(1,10))-set([sudoku[i][j]])-set([sudoku[y+range(1,10,3)[i//3]][x+range(1,10,3)[j//3]] for y in (-1,0,1) for x in (-1,0,1)])-set(sudoku[i])-set(list(zip(*sudoku))[j])
        if len(empties)==0:return True
        gap = next(iter(empties))
        predictions = predict(*gap)
        for i in predictions:
            sudoku[gap[0]][gap[1]] = i
            if solve(sudoku):return True
            sudoku[gap[0]][gap[1]] = 0
        return False
    

提交回复
热议问题