1、思路

使用递归与回溯的方法,从开头一直往后在数字为0的地方用1到9按顺序试,成功就填下一个空格,走到无路可走就回到上一层重新试下一个数字,直至完成。
数独用数组表示 ,空值用0表示。

board=[
    [8,0,0,0,0,0,0,0,0],
    [0,0,3,6,0,0,0,0,0],
    [0,7,0,0,9,0,2,0,0],
    [0,5,0,0,0,7,0,0,0],
    [0,0,0,8,4,5,7,0,0],
    [0,0,0,1,0,0,0,3,0],
    [0,0,1,0,0,0,0,6,8],
    [0,0,8,5,0,0,0,1,0],
    [0,9,0,0,0,0,4,0,0]]

2、开始实施

(1)、写一个验证数字是否合格的函数

def check(board,r,c,value):
    for item in board[r]:#判断行内是否重复
        if item==value:
            return False

    for item in board:#判断列内是否重复
        if item[c]==value:
            return False

    for row in board[(r//3)*3:(r//3)*3+3]:#判断宫内是否重复
        for item in row[(c//3)*3:(c//3)*3+3]:
            if item==value:
                return False

    return True

(2)、写一个打印展示数独的函数

def show(board):
    for r in range(9):
        for c in range(9):
            print(board[r][c],end=' ')
        print('')

(3)、主函数

def sudoku(board):
    for r in range(9):
        for c in range(9):
            if r==8 and c==8 and board[r][c]!=0:
                print('------answer------')
                show(board)
                print('------------------')
            if board[r][c]==0:
                for n in range(1,10):
                    if check(board,r,c,n):
                        board[r][c]=n
                        if not sudoku(board):
                            board[r][c]=0
                return False

3、测试

在文件的底部添加以下代码

if __name__=='__main__':
    board=[
        [8,0,0,0,0,0,0,0,0],
        [0,0,3,6,0,0,0,0,0],
        [0,7,0,0,9,0,2,0,0],
        [0,5,0,0,0,7,0,0,0],
        [0,0,0,8,4,5,7,0,0],
        [0,0,0,1,0,0,0,3,0],
        [0,0,1,0,0,0,0,6,8],
        [0,0,8,5,0,0,0,1,0],
        [0,9,0,0,0,0,4,0,0]]
    print('------subject------')
    show(board)
    print('-------------------')
    sudoku(board)

运行测试

  • 最新随笔

  • 有一个东西得警惕下,就是找AIAgent聊天时(特别是含记忆功能的),大部分时候是带着问题、困扰来的(消极时刻),而ai可能通过我提供给它的信息,得出一个片面的结论、记忆,形成一个对于我的画像,并反馈给我,导致我可能产生心理暗示,认为自己可能是那样的人,进而自我实现预言。
  • 整个博客全面ai化,所有文章、随笔、知识库、习惯、目标、任务、清单、随记等全部工具化,让ai调用接管含人生管理系统在内的整个博客,完成。 让ai有更完整的上下文,更全面的视野,能产生更大能量
  • 给吉他网 vibe coding 了个吉他工具箱 (๑•̀ㅂ•́)و✧
  • 海边
  • 增加一些流动的云
  • 文章页也调整了下(图一旧,图二新)
  • 给首页调了下样式,图一旧版、图二新版。vibe coding之后,改起老项目反倒成了一种娱乐。
  • 昨天睡觉的时候反复梦到“人本主义”这个词,可是最近好像都没有相关的知识接触过,半梦半醒的时候还去搜了下具体含义,找了些视频看了下