python解初中题_用python解一道数独小题
个人的第一篇博文,还请多多支持,不当之处,还请多多指教。(以后有精力还会写更多的文章)
本人是一名大一狗,目前为止学了半年python,对python也就有一点点的了解,没事爱编写一些小程序玩,不过都是些简单的小程序啦。。。在大佬面前不值一提。
今天元宵节,早上看了我关注的叫三乐大掌柜的up的一个视频,将1-25无重复的填入5✖5的方格纸中,使每一行、每一列和两条对角线的和都相等。
这题有意思,我想用python程序解之。做程序就要先想一想思路了,我的第一反应就是将25个数进行全排列,但当我算了算25!的时候,我就放弃了
(25!=15511210043330985984000000)。
退一步,解3✖3的吧。
这样,题就简化为:将1-9无重复的填入3✖3的方格纸中,使每一行、每一列和两条对角线的和都相等。
首先得到1-9的排列就难住了我,于是就去CSDN查找有关python排列的文章,这才知道python中有一个叫itertools的库,可以做排列。
只需这样:
import itertools
a = [1, 2, 3, 4]
b = list(itertools.permutations(a))
print(b)
输出:[(1, 2, 3, 4), (1, 2, 4, 3), (1, 3, 2, 4), (1, 3, 4, 2), (1, 4, 2, 3), (1, 4, 3, 2), (2, 1, 3, 4), (2, 1, 4, 3), (2, 3, 1, 4), (2, 3, 4, 1), (2, 4, 1, 3), (2, 4, 3, 1), (3, 1, 2, 4), (3, 1, 4, 2), (3, 2, 1, 4), (3, 2, 4, 1), (3, 4, 1, 2), (3, 4, 2, 1), (4, 1, 2, 3), (4, 1, 3, 2), (4, 2, 1, 3), (4, 2, 3, 1), (4, 3, 1, 2), (4, 3, 2, 1)]
共有24组排列,每个排列都是一个元组。
为了便于描述,先把九个数命名如下:
x11 x12 x13
x21 x22 x23
x31 x32 x33
学过线性代数的小伙伴可以看作一个3✖3的矩阵,接下来就是要填数字了。废话已经不少了,直接上python代码。
import itertools
a = [i for i in range(1, 10)]
b = list(itertools.permutations(a))
#print(b)
for tupl in b: #填数字
x11 = tupl[0]
x12 = tupl[1]
x13 = tupl[2]
x21 = tupl[3]
x22 = tupl[4]
x23 = tupl[5]
x31 = tupl[6]
x32 = tupl[7]
x33 = tupl[8]
if (x11+x12+x13)\#python支持连等
== (x21+x22+x23)\
== (x31+x32+x33)\
== (x11+x22+x33)\
== (x13+x22+x31)\
== (x11+x21+x31)\
== (x12+x22+x32)\
== (x13+x23+x33):
print(tupl[0 : 3])
print(tupl[3 : 6])
print(tupl[6 : 9])
print(" ") #打印空行
这样就用穷举的方法完成了数独的填写,输出如下:
(2, 7, 6)
(9, 5, 1)
(4, 3, 8)
(2, 9, 4)
(7, 5, 3)
(6, 1, 8)
(4, 3, 8)
(9, 5, 1)
(2, 7, 6)
(4, 9, 2)
(3, 5, 7)
(8, 1, 6)
(6, 1, 8)
(7, 5, 3)
(2, 9, 4)
(6, 7, 2)
(1, 5, 9)
(8, 3, 4)
(8, 1, 6)
(3, 5, 7)
(4, 9, 2)
(8, 3, 4)
(1, 5, 9)
(6, 7, 2)
共有八组解。
这就完成了数独的填写。
(注:python版本为3.7.1)
如有更好的解法,还请私信我。(我的邮箱1569228598@qq.com)
欢迎点赞、投币、转发,更新不及时,谨慎关注。
python解初中题_用python解一道数独小题相关推荐
- python数学方程计算_用Python解方程
一元一次方程 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释语: ...
- python平方数迭代器_对python中的高效迭代器函数详解
python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...
- python流获取控制台_对Python捕获控制台输出流的方法详解
有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p ...
- python中累加函数_对Python实现累加函数的方法详解
对Python实现累加函数的方法详解 发布时间:2020-10-26 00:02:44 来源:脚本之家 阅读:120 作者:岚漾忆雨 这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 ...
- python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)
今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...
- python语法基础知识第四关第二题_【python基础语法】第4天作业练习题
"""有6道题(通过字典来操作): 1. 某比赛需要获取你的个人信息,设计一个程序, 运行时分别提醒输入 姓名.性别.年龄 ,输入完了,请将数据存储为一个字典, 2.数据 ...
- python累乘编程_黄哥Python:编程初学者来做题
第一题: ''' 求解 ( i + i ) 的累乘.你可以用Python,Java, Go 等语言来写代码. (1+1)*(2+2)*(3+3)*.....(100+100) ''' 特别提 ...
- 大学python编程题_大学python题 求大佬解答!!!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 7-4 计算指数 (5 分) 真的没骗你,这道才是简单题 -- 对任意给定的不超过10的正整数n,要求你输出2n.不难吧? 输入格式: 输入在一行中给出一 ...
- python语言程序设计编程题_《python语言程序设计》_第一章编程题
题目1.1 :显示"welcome to python " 答案:print('welcome to python') 题目1.2:显示"welcome to pytho ...
最新文章
- 九度OJ 1336:液晶屏裁剪 (GCD)
- Powershell Module for Netapp Data Ontap
- JAVA集合(笔记)
- DNS原理及其解析过程 精彩剖析
- linux脚本中空格怎么显示,linux vim 显示空格
- Android中Handler的正确使用
- hdu 2527 Safe Or Unsafe
- 数据报表体系搭建流程
- 【数字电子技术基础】数字电子钟设计
- Weekly Recap!相对不平淡的行情 相对冷淡的 DeFi 市场
- 史上最全BigDecimal的5种进位方式:ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_DOWN的比较
- 静态资源部署分析和实验
- 线程安全的对象生命期管理(一)
- 【VMCloud云平台】SCAP(四)租户(二)
- Delphi图像处理 -- 彩色浮雕
- 微信输入就死机问题处理
- 查表法求sin和cos
- Ubuntu基本使用指南
- Andorid屏幕唤醒异常,Power按键无法点亮屏幕的分析
- 数据库查找姓李的人_假设某数据库表中有一个姓名字段,查找姓李的记录的准则是( )_学小易找答案...
热门文章
- android os于8.1区别,Android-x86 8.1-rc2发布 运行于x86 PC上的安卓OS
- centos 7.9密码改密钥登陆
- centos7 安装 Minio
- 【已解答】Linux ./configure --prefix 命令是什么意思?
- 4.5 计算机网络之网络层路由选择协议(自治系统AS、RIP、OSPF、BGP)
- java中的Cookie是什么_第74节:Java中的Cookie和Session
- vs2010 利用DMP文件、pdb文件查找release下的异常行号的方法
- 启明云端分享|sigmastar SSD201 \ SSD202D内存大小问题及flash分区问题解答
- html5微信摇一摇api,摇一摇关注JSAPI
- 方案接口服务器问题记录