【每日一练】python实现九宫格数独小游戏

您所在的位置:网站首页 九宫格数字游戏1-9图片 【每日一练】python实现九宫格数独小游戏

【每日一练】python实现九宫格数独小游戏

2023-07-10 01:25| 来源: 网络整理| 查看: 265

题目

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

1、每行,列,对角线的和相等,那么和一定为15。 2、找出所有三个数和为15的组合。 3、再上一步的基础上,找出使每行、每列、对角线和相等的所有组合。

代码

# 找出所有和为15的三个数的组合 from itertools import product lst = range(1, 10) arr = [] #这里使用itertools模块中的product()方法避免多次调用for循环,提高代码可读性与效率 for n1, n2, n3 in product(lst, lst, lst): #和为15且不重复 if n1+n2+n3 == 15 and len({n1, n2, n3})==3: arr.append([n1, n2, n3]) #打印结果 print(arr)

以下就找出了所有三个数和为15的组合:

[[1, 5, 9], [1, 6, 8], [1, 8, 6], [1, 9, 5], [2, 4, 9], [2, 5, 8], [2, 6, 7], [2, 7, 6], [2, 8, 5], [2, 9, 4], [3, 4, 8], [3, 5, 7], [3, 7, 5], [3, 8, 4], [4, 2, 9], [4, 3, 8], [4, 5, 6], [4, 6, 5], [4, 8, 3], [4, 9, 2], [5, 1, 9], [5, 2, 8], [5, 3, 7], [5, 4, 6], [5, 6, 4], [5, 7, 3], [5, 8, 2], [5, 9, 1], [6, 1, 8], [6, 2, 7], [6, 4, 5], [6, 5, 4], [6, 7, 2], [6, 8, 1], [7, 2, 6], [7, 3, 5], [7, 5, 3], [7, 6, 2], [8, 1, 6], [8, 2, 5], [8, 3, 4], [8, 4, 3], [8, 5, 2], [8, 6, 1], [9, 1, 5], [9, 2, 4], [9, 4, 2], [9, 5, 1]]

这里说明一下,product()部分也可以使用三次for循环代替,即:

for n1 in lst: for n2 in lst: for n3 in lst:

以下同理

#在上一步的基础上找出所有满足条件的组合 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]+c[0] #第一列求和 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')

找出所有组合:

[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] --------


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3