6个步骤教你用Python解数独!(含实例代码)

时间:2024-03-19 12:44:51

前言:

今天为大家带来的内容是:6个步骤教你用Python解数独!(含实例代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,喜欢本文内容的话记得点赞转发收藏不迷路哦!!!

芬兰数学家因卡拉花费3个月时间设计出的世界上迄今难度最大的数独。数独是 9 横 9 竖共有 81 个格子,同时又分为 9 个九宫格。规则很简单:每个空格填入 1~9 任意一个数字,需要保证每个横排和竖排以及九宫格内无相同数字。

6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)

解数独是一个可有可无的爱好,知道这个益智游戏,但是不很上心。但是前两天,由于自己的学生装了一个 ubuntu 18.04 的系统,上面有一些数独游戏,偶然间,让我看见了,为了更好的显摆自己的 Python 知识,决定用 Python 写一个程序,所以就有了下面的文字。

1、将待解的数独转换成 Python 矩阵

6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)

就是这么简单,将待填写的空白格用 0 来代替。

2、寻找第一个空格位置

6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)

找到 Python 矩阵中第一个是 0 的元素的位置坐标。

3、寻找下一个空格位置

6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)

找到 Python 矩阵中下一个是 0 的元素的位置坐标。详细内容看注释。

4、寻找适合当前空格的数字的集合

6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)

每个空格可以填入 1~9 中的任意一个数字,但要符合规则:每个空格填入 1~9 任意一个数字,需要保证每个横排和竖排以及九宫格内无相同数字。下面的代码中的 grid 变量,保存的是当前位置所处的九宫格。v 变量是通过集合运算,将 1~9 这个数字集合中,与行的数字集合、列的数字集合以及九宫格的数字集合重叠的部分去除掉。剩余的部分就是符合条件的数字的集合。

5、使用递归尝试解数独(Sudoku)

6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)

详细内容看注释。

6、代码展示

6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)
6个步骤教你用Python解数独!(含实例代码)

以上就是本文的全部内容,希望对大家的学习有所帮助!!!

python程序员交流群:877562786(群里含大量学习资料,面试宝典等)