用python实现九宫格

首先九宫格的要求是将整数1~9不重复地填入九个格子中(相当于3*3的矩阵),要求每行、每列、主对角、副对角所有元素之和为15。程序中需要引入itertools迭代器模块,主要用到该模块中的permutations(iterable,[,r])函数。该函数作用是创建一个迭代器,返回iterable中所有长度为r的项目序列,如果省略r,那么序列的长度与iterable中的项目数量相同。注意返回的项目序列只与位置有关。例如:name=[1,2,3] permutations(name,3),返回6种序列组合,(1,2,3)和(1,3,2)是不同的序列组合。程序倒数第三行分别将第一行的三个数所组成的列表和第二行的三个数所组成的列表变为集合,再判断二者是否有交集,避免了两行同时出现相同数的情况。程序还导入了numpy模块,用来处理和存储矩阵。以下是程序源码,过程比较简单,在这里不再赘述了。

import itertools
import numpy as np
name=[x for x in range(1,10)]
sequence_3nums=[p for p in itertools.permutations(name,3)  if sum(p)==15]
for row1_1,row1_2,row1_3 in sequence_3nums:
    for row2_1,row2_2,row2_3 in sequence_3nums:
        for row3_1,row3_2,row3_3 in sequence_3nums:
            if row1_1+row1_2+row1_3==15\
               and row2_1+row2_2+row2_3==15\
               and row3_1+row3_2+row3_3==15\
               and row1_1+row2_1+row3_1==15\
               and row1_2+row2_2+row3_2==15\
               and row1_3+row2_3+row3_3==15\
               and row1_1+row2_2+row3_3==15\
               and row1_3+row2_2+row3_1==15:
                if len(set([row1_1,row1_2,row1_3])&set([row2_1,row2_2,row2_3]))==0:
                    nums=np.array([[row1_1,row1_2,row1_3],[row2_1,row2_2,row2_3],[row3_1,row3_2,row3_3]])
                    print(nums)

下图是输出结果:
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值