Merzirac法

当n为奇数时,我们称幻方为奇阶幻方。
Merzirac法生成奇阶幻方:

  1. 在第一行居中的方格内放1
  2. 以后按顺序,向右斜上方填写数字。(称为斜步)
  3. 若出到方阵上方,把该数字填到本该所在列的最下格。
  4. 若出到方阵右方,把该数字填到本该所在行的最左格。
  5. 若右上已有数字,或出到方阵右上(即对角线方向), 则把数字填入上一个数字的下一格,即在n的下方放入n+1,(称为跳步),再按上述方法放置到2n,在2n的下方放入2n+1,在3n的下方放入3n+1… 依次填完所有数字即可完成任何一个奇阶幻方。

比如:构成一个5阶幻方。每一行、每一列、对角线的和都为65.

代码实现

取余巧妙做法

注意:

print((-1)%3)
print(1%3)
print(2%3)
print(3%3) #到边界余数也为0了,等于回到了最开始的地方
2
1
2
0
def magic_square_yu(n):matrix = [[0] * n for i in range(n)]row = 0col = n//2matrix[row][col] = 1for i in range(2,n*n+1):try_row = (row - 1) % ntry_col = (col + 1) % nif(matrix[try_row][try_col] == 0):row = try_rowcol = try_colelse:row = (row+1+n) % nmatrix[row][col] = ireturn matrix

测试:

magic_square_yu(5)
[[17, 24, 1, 8, 15],[23, 5, 7, 14, 16],[4, 6, 13, 20, 22],[10, 12, 19, 21, 3],[11, 18, 25, 2, 9]]

死脑筋直接做

如果看不懂上面的取余,可以把情况一步步拆开来,直接做。

def magic_square(n):matrix = [[0] * n for i in range(n)] #生成n*n的矩阵max_col = len(matrix[0])max_row = len(matrix)row = 0col = n//2i = 1while (i < n*n+1):if row == -1 and col == max_col:row += 2col -= 1elif row == -1:row = max_row-1elif col == max_col:col = 0elif matrix[row][col] != 0:row += 2col -= 1else:matrix[row][col] = irow -= 1col += 1i += 1return matrix

测试:

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

【矩阵篇】九宫图/n宫图生成——Merzirac法生成奇阶幻方 Python实现相关推荐

  1. 幻方解法之horse法生成奇阶幻方

    /* 程序思想参考百度百科上"幻方法则" 2015-01-27 http://baike.baidu.com/link?url=7ynfkLYfGv4f7PtQkuH4PSn_8I ...

  2. 【数据挖掘】高斯混合模型 ( 高斯混合模型参数 | 高斯混合模型评分函数 | 似然函数 | 生成模型法 | 对数似然函数 | 高斯混合模型方法步骤 )

    文章目录 I . 高斯混合模型 参数简介 ( 参数 ) II . 高斯混合模型 评分函数 ( 评价参数 ) III. 似然函数与参数 IV . 生成模型法 V . 对数似然函数 VI . 高斯混合模型 ...

  3. 【音视频数据数据处理 7】【RGB/BMP篇】生成24色 RGB24图 和 BMP图

    [音视频数据数据处理 7][RGB篇]生成一张24色 RGB24图 和 BMP图 一.生成24色 RGB24图代码实现 二.生成24色 BMP图代码实现 先上24色图,及其对应的RGB值. 本文地址: ...

  4. 用于时序动作提名生成任务,爱奇艺提出BC-GNN图神经网络 | ECCV 2020

    时序动作提名生成任务可以从未处理的长视频中定位出包含动作内容的片段,对视频理解以及时序行为检测任务等有着重要的作用.随着视频数量的激增以及视频内容的丰富,对时序动作提名算法的关注和需求也得到巨大提升. ...

  5. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图

    文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...

  6. NeurIPS | 17篇论文带你展望图机器学习发展趋势

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 : AI科技评论 [人工智能 ...

  7. AI绘图实战(十):制作线稿矢量图之包头巾的女人,画矢量图/生成矢量图/导出矢量图/直出svg/vector studio插件使用 | Stable Diffusion成为设计师生产力工具

    S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习: 安装及其问题解决参考:<Windows安装Stable D ...

  8. Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线

    文章目录 ddx, ddy 说明 DirectX - ddx, ddy OpenGL - dFdx, dFdy 伪代码表示 可用它来做什么 简单的边缘突出应用 Shader 边缘突出-锐化-增加差值 ...

  9. NeurIPS2019 | 17篇论文带你展望图机器学习发展趋势

    点击上方"深度学习技术前沿",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | Michael Galkin 编辑 | 晓凡,Ca ...

最新文章

  1. DDR和DDR2的区别
  2. 体育馆黑名单系统 的设定
  3. kubernetes 集群部署
  4. java浏览文件夹_一个用java实现简单的文件浏览器
  5. java set hashcode_Java学习笔记_180724_HashSet_hashCode()
  6. Mr.J-- HTTP学习笔记(六)-- 代理
  7. javascript中原型模式创建对象特点分析
  8. Win11打不开Windows安全程序如何修复?
  9. Python-Scikit learn保存机器学习训练的模型
  10. mybatis自增主键回填
  11. nc 连接文件服务器失败,nc文件服务器
  12. WPF中StackPanel的尺寸的怪癖
  13. ART中 MIR -- LIR -- 机器码 的流程
  14. MySQL查看索引和数据所占内存
  15. 网站被攻击如何修复网站漏洞
  16. Preact 在TSX中优雅使用className
  17. 【案例20】NC系统was部署后无法登录
  18. 《新撰组异闻录——铁》启示录
  19. 模糊集合和隶属度详解
  20. 知识图谱数据集下载 KnowledgeGraphDatasets

热门文章

  1. 在福州,看见智慧城市的务实完整方案
  2. Latex 公式被压扁过小
  3. TI 海思 安霸 智利普 等顶级摄像机芯片简要介绍
  4. Python识别二维码条形码?用pyzbar一招搞掂(含代码)
  5. 40w粉整700w活,一支恰饭作品让B站用户直呼“甲方赚了”
  6. 赞叹AI的力量-TopazLabs 全家桶使用经历
  7. Queen Collisions(分行列模拟)
  8. ZOC7 for Mac(终端仿真器)
  9. python迭代法求解方程_第一部分:趣味算法入门;第六题牛顿迭代法求一元三次方程的根...
  10. 云服务器中的mac地址是什么?