前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现九宫格数独小游戏

Python实现九宫格数独小游戏

作者头像
算法与编程之美
发布2023-08-22 14:32:41
3450
发布2023-08-22 14:32:41
举报
文章被收录于专栏:算法与编程之美

1 问题

有1-9个数字,将他们填入一个3*3的九宫格中,使得他们的每行,每列,以及对角线上的和相等,且要求每个格子的数字不可以重复。使用python列出所有可能的组合。示例如下:

2 方法

  1. 每行,列,对角线的和相等,那么和一定为15。
  2. 这里使用itertools模块中的product()方法避免多次调用for循环,提高代码可读性与效率
  3. 找出所有三个数和为15的组合。
  4. 再上一步的基础上,找出使每行、每列、对角线和相等的所有组合。

通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。

代码清单 1

from itertools import productlst = range(1,10)arr = []for n1,n2,n3 in product(lst,lst,lst):if n1+n2+n3 == 15 and len({n1,n2,n3})==3:arr.append([n1,n2,,n3])print(arr)from itertools import productfor a, b, C in product(arr,arr,arr):if len(set(a+b+c))==9:sum1 = a[0]+b[0]+0q0]#第一列求和sum2 = a[1]+b[1]+c[1]#第二列求和sum3 = a[2]+b[2]+c[2]#第三列求和sum4 = a[0]+b[1]+c[2]#对角线求和sum5 = a[2]+b[1]+c[0]#对角线求和if sum1 == sum2 == sum3== sum4 == sum5:print(a,end ='\t')print(b,end ='\t')print(c,end ='\t')

3 结语

针对实现利用python实现九宫格数独小游戏,我们提出了使用itertools模块中的product()方法避免多次调用for循环,提高代码可读性与效率。然后找出所有三个数和为15的组合,再上一步的基础上,找出使每行、每列、对角线和相等的所有组合。再依次进行第一列求和,第二列求和、第三列求和、对角线求和、对角线求和;最后打印出九宫格。通过这次代码的学习,我们的代码还并不完善,需要继续改进。通过实验、实践等证明提出的方法是有效的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档