幻方(Magic Square)

幻方(Magic Square)

幻方概述

什么是幻方呢?幻方(Magic Square)就是指在n×n(n行n列)的方格里填上一些连续的数字,使任意一行、任意一列和对角线上的数字的和都相等。例如有3×3的3行3列的幻方叫三阶幻方,4×4的4行4列的幻方叫四阶幻方,5×5的5行5列的幻方叫五阶幻方等等。

幻方最早记载于中国公元前500年的春秋时期《大戴礼》中,这说明中国人民早在2500年前就已经知道了幻方的排列规律。除了“河图”,中国古代还有“洛书”之说,相传在大禹治洪水时,洛水中浮出一只大乌龟,背上有图有字,人们称之为“洛书”。

在幻方中每行、每列、每条对角线上各数的和都相等,这个和称为“幻和”。

幻和 = 总数和 ÷ 阶数

奇数幻方中,中间数 = 幻和 ÷ 阶数

由1、2、3、……等连续自然数生成的幻方为基本幻方。在此基础上各数再加或减一个相同的数,可组成由零或负数组成的新幻方。也就是说,编排n阶幻方时,不一定非要从1开始,只要是这些数能构成等差数列就可以了。

一般我们把奇数×奇数的幻方叫奇阶幻方,偶数×偶数的幻方叫偶阶幻方,填奇阶幻方和偶阶幻方的有着不同的方法。

一、奇阶幻方通用构造方法

口诀(又称为罗伯法):

一居上行正中央,

依次斜填切莫忘,

上出框界往下写,

右出框时左边放,

重复便在下格填,

出角重复一个样。

解释:

把1(或最小的数)放在第一行正中; 按以下规律排列剩下的(n×n-1)个数:

1、每一个数放在前一个数的右上一格;

2、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;

3、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;

4、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内;

5、如果这个数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内。

三阶幻方为例子:

一居上行正中央——数字 1 放在首行最中间的格子中。如下图:

依次斜填切莫忘——向右上角斜行,依次填入数字。如下图:

上出框界往下写——如果出了上框边界,就将数字填在该列最下面空格里。如下图:

右出框时左边放——如果出了右框边界,就将数字填在该行最左空格里。如下图:

重复便在下格填——如果右上格子已填数字,就填在前一数字下面空格里。如下图:

出角重复一个样——如果朝右上角出框界,和“重复”的情况做同样处理。如下图:

最后8和9按照右出界、上出界的方法填写,如下图:

完成!

按照这种方式,完成后,做镜像或旋转对称,可得到实际相同的其他填法,如:

 

用该填法得到的5阶幻方:

7阶幻方:

二、偶数阶幻方

偶阶幻方的概念:一个n阶幻方,当n为偶数时,我们称幻方为偶阶幻方。

偶阶幻方分为双偶幻方和单偶幻方。当n可以被4整除时,我们称该偶阶幻方为双偶阶幻方,如8阶、12阶、16阶等;当n不可被4整除时,我们称该偶阶幻方为单偶阶幻方(即4M+2式幻方),如6阶、10阶、14阶等。偶数阶幻方的构造方法由此分为两类:双偶阶幻方和单偶阶幻方。

待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458921.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基于微信小程序的学生实习管理小程序

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

2024.02.06

TCP提供面向有连接的,可靠的数据传输服务,传输过程中,数据无误、数据无丢失、数据无失序、数据无重复 UDP面向无连接的,不保证数据可靠的,尽最大努力传输的协议,数据传输过程中,可能出现数据丢…

双非本科准备秋招(18.2)—— 图解Monitor

对象头 普通对象: 数组对象: java中对象存储结构分为对象头(Header)、实例数据(Instance Date)和对齐填充(Padding)。 对象头存储着Mark Word和Klass Word,通过Klass Wo…

cpp智能指针篇(下):深入理解现代cpp中的智能指针shared_ptr、unique_ptr 以及 weak_ptr

目录 写在前面 unique_ptr shared_ptr weak_ptr 智能指针的使用陷阱 致谢 写在前面 上一篇文章同大家深入探讨了auto_ptr。今天给大家带来的是对于 shared_ptr、unique_ptr 以及 weak_ptr 的深入理解,通过测试案例和源码剖析对这三种重要的智能指针的使用方法&…

无心剑小诗《醉爱平凡人生》

醉爱平凡人生 平凡人生,别样卓越 做调色板上最亮的颜料 没有豪华光环与繁杂束缚 只有一份简单的快乐 不追求虚名,不被物欲左右 安静地享受生活,品味每滴雨露 平凡人生,宛如流淌的小溪 没有壮烈激流,却有恒久细流 不…

2024年【G2电站锅炉司炉】模拟试题及G2电站锅炉司炉考试试题

题库来源:安全生产模拟考试一点通公众号小程序 G2电站锅炉司炉模拟试题是安全生产模拟考试一点通生成的,G2电站锅炉司炉证模拟考试题库是根据G2电站锅炉司炉最新版教材汇编出G2电站锅炉司炉仿真模拟考试。2024年【G2电站锅炉司炉】模拟试题及G2电站锅炉…

【数据库】索引的使用

【数据库】索引的使用 前言出发示例创建表Explain 查看sql执行计划where 查询解析无索引有索引 where oderBy 查询解析无索引有索引 总结 前言 在数据库设计过程中,常需要考虑性能,好的设计可以大大提高sql 语句的增删改查速度。在表的创建过程中&…

ywtool inspect命令

一.巡检介绍 日巡检是通过定时任务每天凌晨2点30进行巡检周巡检时通过定时任务每周日的凌晨3点进行巡检日巡检日志文件路径:/usr/local/ywtools/log/daily,每周日凌晨2点会将这一周的日巡检日志进行压缩,压缩路径:/usr/local/ywtools/log/backup/daily周巡检日志文件路径:/usr…

UDP端口探活的那些细节

一 背景 商业客户反馈用categraf的net_response插件配置了udp探测, 遇到报错了,如图 udp是无连接的,无法用建立连接的形式判断端口。 插件最初的设计是需要配置udp的发送字符,并且配置期望返回的字符串, [[instances]] targets…

ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重提示词

论文完成初稿之后,一般情况下,宝子们还需要找专家给我们提出评审意见。找专家评审其实并不容易,即使对老师来说,找人评审论文也是一件苦活。我们这个时候可以通过文字提示让 ChatGPT充当我们的评审专家,为论文提出问题…

Spring Boot的打包方式:JAR vs. WAR 打包方式

Spring Boot的打包方式:JAR vs. WAR 打包方式 Spring Boot是一个流行的Java开发框架,提供了快速、便捷的应用程序开发和部署方式。本文将介绍Spring Boot的两种常见打包方式:JAR和WAR。我们将深入探讨它们的特点、适用场景和部署方式&#xf…

常用ES技巧二

文章目录 一、Object.entries()和Object.fromEntries()1.1、Object.entries()1.2、Object.fromEntries() 二、Symbol类型和Symbol属性三、WeakMap和WeakSet四、Promise.allSettled()五、BigInt六、Array.of和Array.from七、.at和.flat八、总结九、最后 一、Object.entries()和O…