最近陪小孩做数独游戏,一时兴起,写了一段代码在解题,仅供大家娱乐!
思路:
1、获取题目,存放于二维列表a中,无数字的地方为0
2、准备一个三维数组b,存放每个格子中可能的数字列表,剩下一个可能数字时填写到a,并将b中此处为[0]
每填入一个数字到a,就将b中不可能的数字移除。
3、无限循环,直到所有a中没有0,或者填写完成了81个数字。

好的,废话少说,直接上代码!

def main():a = [[2,0,9,0,0,0,0,6,0],[0,1,0,4,6,3,0,2,0],[0,0,4,0,0,5,7,0,0],[0,0,0,0,0,8,0,3,9],[0,0,0,5,7,9,0,0,0],[9,8,0,3,0,0,0,0,0],[0,0,2,6,0,0,4,0,0],[0,7,6,9,8,4,0,5,0],[0,9,0,0,0,0,8,0,6]]# a = []# for i in range(0, 9):#     a0 = input("please input requestion line"+str(i))#     a[i].appand(a0.split(' '))for iii in range(0, 9):print(a[iii])b = []for i in range(0,9):b.append([])for j in range(0,9):b[i].append([1,2,3,4,5,6,7,8,9])print(b[i])#初始化num = 0for i in range(0,9):for j in range(0,9):if a[i][j]!=0:num += 1a,b = movenot(i,j,a,b)print(num)#解题while num<81:for i in range(0, 9):for j in range(0, 9):if len(b[i][j]) == 1 and b[i][j] != [0] and a[i][j] == 0:a[i][j] = b[i][j][0]b[i][j] = [0]num += 1print(num)a, b = movenot(i, j, a, b)print("解题完成!")for iii in range(0,9):print(a[iii])def movenot(i,j,a,b):#移除不可能的数字for jj in range(0,9):if a[i][j] in b[i][jj]:b[i][jj].remove(a[i][j])if a[i][j] in b[jj][j]:b[jj][j].remove(a[i][j])if i<3:m = 0elif i<6:m = 3else:m=6if j<3:n = 0elif j<6:n = 3else:n=6if a[i][j] in b[0+m][0+n]:b[0+m][0+n].remove(a[i][j])if a[i][j] in b[0+m][1+n]:b[0+m][1+n].remove(a[i][j])if a[i][j] in b[0+m][2+n]:b[0+m][2+n].remove(a[i][j])if a[i][j] in b[1+m][0+n]:b[1+m][0+n].remove(a[i][j])if a[i][j] in b[1+m][1+n]:b[1+m][1+n].remove(a[i][j])if a[i][j] in b[1+m][2+n]:b[1+m][2+n].remove(a[i][j])if a[i][j] in b[2+m][0+n]:b[2+m][0+n].remove(a[i][j])if a[i][j] in b[2+m][1+n]:b[2+m][1+n].remove(a[i][j])if a[i][j] in b[2+m][2+n]:b[2+m][2+n].remove(a[i][j])return a,bif __name__ == '__main__':main()

以上!请各位大佬指正!谢谢!

【算法】数独解题——用python代码相关推荐

  1. 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...

    为了进入大厂,我想很多人都会去牛客.知乎.CSDN等平台去查看面经,了解各个大厂在问技术问题的时候都会问些什么样的问题. 在看了几十上百篇面经之后,我将算法工程师的各种类型最常问到的问题都整理了出来, ...

  2. 用通俗易懂的方式讲解:主成分分析(PCA)算法及案例(Python 代码)

    文章目录 知识汇总 加入方式 一.引入问题 二.数据降维 三.PCA基本数学原理 3.1 内积与投影 3.2 基 3.3 基变换的矩阵表示 3.4 协方差矩阵及优化目标 3.5 方差 3.6 协方差 ...

  3. 算法学习之模拟退火算法路径规划(python代码实现)

    模拟退火算法路径规划(python代码实现) 一.引言 二.算法介绍以及伪代码 1.算法通俗介绍 2.路径规划算法伪代码 三.算法流程及代码实现 1.地图创建 2.初始化路径 小结 3.计算适应度值 ...

  4. 【算法思想】Reed-Solomon 纠错编码基础概念,编码、解码算法原理、数学公式 Python代码实现

    [算法思想]Reed-Solomon 纠错编码基础概念,编码.解码算法原理.数学公式 & Python代码实现 文章目录 [算法思想]Reed-Solomon 纠错编码基础概念,编码.解码算法 ...

  5. kmeans算法详解和python代码实现

    kmeans算法详解和python代码实现 kmeans算法 无监督学习和监督学习 监督学习: 是通过已知类别的样本分类器的参数,来达到所要求性能的过程 简单来说,就是让计算机去学习我们已经创建好了的 ...

  6. 编辑距离算法详解和python代码

    编辑距离(Levenshtein Distance)算法详解和python代码 最近做NLP用到了编辑距离,网上学习了很多,看到很多博客写的有问题,这里做一个编辑距离的算法介绍,步骤和多种python ...

  7. python机器学习算法.mobi_机器学习之ID3算法详解及python代码实现

    在生活中我们经常会用到决策树算法,最简单的就是二叉树了:相信大家也会又同样的困扰,手机经常收到各种短信,其中不乏很多垃圾短信.此时只要设置这类短信为垃圾短信手机就会自动进行屏蔽.减少被骚扰的次数,同时 ...

  8. 排序算法对比、总结(Python代码)

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共6126个字,27张图,预计阅读时间16分钟. 排序大的分类可以分为两种:内排 ...

  9. 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码

    上篇介绍了隐马尔科夫模型 本文给出关于问题3解决方法,并给出一个例子的python代码 回顾上文,问题3是什么, 下面给出,维比特算法(biterbi) algorithm 下面通过一个具体例子,来说 ...

  10. python必备基础代码-机器学习算法基础(使用Python代码)

    介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...

最新文章

  1. directive多指令之间的异步调用
  2. erp沙盘模拟软件_VOL.977 工商第九周周报 ERP沙盘模拟大赛排名第一 跨学科校企合作商讨筹备...
  3. java okhttp https_OkHttp是否支持接受自签名SSL证书?
  4. 项目实施双机热备备忘
  5. JAVA的System.out.println和System.out.printf之间有什么区别?
  6. 对某钓鱼网站的一次渗透测试
  7. 1079 Total Sales of Supply Chain(甲级)
  8. 1.7编程基础之字符串_04石头剪子布
  9. reddit_Reddit如何大规模构建功能:采访其工程副总裁
  10. linux java url 异常_java异常处理总结
  11. alibaba cloud sdk使用工作笔记0001---通过alibaba cloud sdk动态操作自己的阿里云产品,设置,或者查询信息
  12. Tomcat 优化和性能监测
  13. 查看文件_如何在Mac上显示和查看隐藏的文件/文件夹
  14. 3第一周课后练习#183;阅读计划(3)-使用函数来访问私有数据成员
  15. linux下磁盘占用达到100%了,找不到哪些大文件耗尽了磁盘。
  16. Sync Framework 词汇表
  17. 好用的局域网共享工具有哪些?win10系统如何设置?
  18. python汉化补丁包怎么安装_如何安装python包
  19. 《码出高效-阿里巴巴Java开发手册-泰山版》阿里最新出品的泰山版Java开发手册,告别垃圾代码
  20. 虚拟服务器不识别网银盾,建行u盾插电脑没反应网页不自动跳出 3步教你快速解决...

热门文章

  1. 分治——线性时间选择算法
  2. lede 内核 单 编_openwrt详细设置教程,lede固件设置中文
  3. 《MATLAB智能算法30个案例》:第6章 遗传算法工具箱详解及应用
  4. multisim中pwl_Multisim 14电路设计与仿真
  5. CSS实现半透明边框
  6. 计算机服务器安装系统安装教程,Windows Server操作系统安装教程
  7. 中文字符集编码Unicode,gb2312,cp936,GBK,GB18030
  8. Perlin noise(一)
  9. 知乎万赞:熬夜整理出的软件测试面试题大全(2021最新)
  10. 面试官:你背了几道面试题就敢说熟悉Java源码?对不起,我们不招连源码都不会看的人