分享

Python实现九宫格数独小游戏

 算法与编程之美 2023-07-26 发布于四川

1 问题

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

2 方法

  1. 每行,列,对角线的和相等,那么和一定为15。

  2. 这里使用itertools模块中的product()方法避免多次调用for循环,提高代码可读性与效率

  3. 出所有三个数和为15的组合。

  4. 再上一步的基础上,找出使每行、每列、对角线和相等的所有组合。

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

代码清单 1

from itertools import product
lst = 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 product
for 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的组合,再上一步的基础上,找出使每行、每列、对角线和相等的所有组合。再依次进行第一列求和,第二列求和、第三列求和、对角线求和、对角线求和;最后打印出九宫格。通过这次代码的学习,我们的代码还并不完善,需要继续改进。通过实验、实践等证明提出的方法是有效的。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多