打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
历史上第一套任意阶幻方构造程序是这样诞生的

中国幻方研究者协会郑重告诉你:

        延安高治源老师在2022年12月8日晚上11点,成功编成任意阶幻方的Vb演算程序。从此人们只要输入幻方的阶数就可以在电子表格中获得任何阶幻方,在洛书诞生到现在,这是幻方历史上的第一个能够完成所有幻方阶数的软件。

    幻方历史上第一套任意阶构造程序是这样诞生的

中国幻方研究者协会

     相传在公元前23世纪大禹治水的时候,在黄河支流洛水中,浮现出一个大鸟龟,甲上背有9种花点的图案,人们将图案中的花点数了一下,竟惊奇地发现9种花点数正巧是199个数,各数位置的排列也相当奇妙,后来人们就称这个图案为洛书。

    洛书就是一个三阶幻方,杨辉是第一个把“洛书”作为一一个纯数学问题来以研究的,公元1275年,他在《续古摘奇算法》的上卷记录了这方面的成就,给出了三至十阶幻方及变式,并提出了三阶、四阶幻方的构造方法,沿袭至今仍是很宝贵的数学典籍。杨辉之后,对纵横图的研究相继不断,明朝程大位,清朝保其寿、方中通、张潮,以及我国著名数学史家李俨,还有一些近代的学者们,都为纵横图的发展作出了贡献。

     当代,研究幻方构造的人甚多,人们构造高阶幻方,高次幻方,类自然数幻方,完美幻方、同余幻方、优美幻方,全子幻方、母子幻方,田园来客幻方、素数幻方、勾股数幻方,幻多边形,穿越幻方、立体幻方,双重幻方、月光宝盒幻方、勾股数组幻方、稀疏幻方、稀疏幻立方、幻圆、幻阵、反幻方等。构造幻方是一件辛苦又有趣的工作,人们一直盼望有一个软件,能够迅速获得任意阶幻方。

      这个愿望终于实现了,在中国幻方研究者协会在2022年12月发刊了22期和23期(幻方双鹰专刊,苏茂挺、钟明幻方专辑,上下册,1100多页)两期幻方专辑后,得到许多信息,延安高治源老师在2022年12月8日晚上11点,成功编成任意阶幻方的Vb演算程序。从此人们只要输入幻方的阶数就可以在电子表格中获得任何阶幻方,在洛书诞生到现在,这是幻方历史上的第一个能够完成所有幻方阶数的软件。由于构造方法的不同,幻方阶数一般分为4m阶,4m+2阶,奇数阶三大类。4m阶幻方采用了广西玉林陈发桂老师的4m阶幻方的构造方法,主体思想是两次倒写。4m+2阶幻方使用了山西李宏晋老师的对角线对调方法,也参考了贵州施学良书籍中的三向异位法。在编程时,奇数阶幻方又可以分为3m3m±1阶两类,其中3m阶幻方为循序填对角线方法,3m±1阶幻方为马步法,主要参考了湖北曹陵老师的马步法,所构成的幻方都是完美幻方。

      构造幻方的方法非常多,但要把它变成可以构造任何幻方的工具是一项大工程,有规律的方法比较容易构造幻方,其它方法显然需要不断努力,有更多的人参与。希望以后能够将用各种方法构造的幻方软件不断创造出来,使得幻方的发展更上一层楼。

程序有所损坏需要联系作者修补,或者想进一步开发程序,可与高治源老师联系,微信号 :dsdqh1012,昵称:大山的情怀
 陈振华老师从幻方的结构、数字排列规律等方面入手,提出了“幻方的分合统一”、“集约目标”等概念,他写了120多篇幻方应用的文章后指出,幻方结构是描述整个宇宙的一个“简单的理论”。可见幻方研究迎来了划时代的潮流,幻方构造程序的普及和推广使用,更具有十分重要的意义。

下面我们将这套程序做一简单的介绍:

Sub 任意阶幻方()
n = Cells(2, 1)
 If n Mod 2 = 1 Then 奇数阶幻方
 If n Mod 4 = 0 Then 双偶阶幻方
 If n Mod 4 = 2 Then 单偶阶幻方
 Cells(2, 5) = ' 恭喜你构造成功' + Str(n) + '阶幻方'
End Sub

广西玉林陈发桂老师正在写幻方书,也在写等幂和数组的文稿,他的儿子陈川、儿媳王萍都是数学老师,王萍老师在网络上找到幻方协会后,认识高老师,然后建了一个群叫数学老师群,在这个群里,他们做了许多探讨。他的4m阶幻方的构造方法,用几句话就概括了,主体思想是两次倒写。由于简单,才引起高老师编程的信心。


Sub 双偶阶幻方()
n = Cells(2, 1)
Dim a(999, 999)
'第一步
For i = 1 To n
For j = 1 To n
a(i - 1, j - 1) = n * (i - 1) + j
Cells(i + 3, j + 3) = n * (i - 1) + j
Next j
Next i
'第二步
For m = 1 + n / 4 To n / 2 + n / 4
For k = 1 To n
Cells(m + 3, k + 3) = n ^ 2 + 1 - (n * (m - 1) + k)
a(m - 1, k - 1) = n ^ 2 + 1 - (n * (m - 1) + k)
Next k
Next m
'第三步
For t = 1 + n / 4 To n / 2 + n / 4
For s = 1 To n
Cells(s + 3, t + 3) = a(n - s, n - t)
Next s
Next t
End Sub

在中国幻方研究者协会的各期幻方专辑里,也有一些幻方程序,主要是湖北蓸陵老师搞的vb6程序,由于界面的问题,能够构造一些低阶幻方。

在湖北孝感市工业学校任教数学,高级讲师,兼任省中专数学教学研究会常务理事。1965年初中毕业后以知青下乡插队,耕耘九载;1974年上调进厂,先后为船员、装 卸、电工;78年参加高考,录中镇江师专,转入教育界,后在湖北大学完成数学本科。崇尚 民主科技,爱好文史诗词,曾自作《岁月诗痕》一册,现醉心于电脑操作与办公自动化。教 学之余,潜心于数学基础理论的研究,多次参与中专教材及学习指导的编审工作。有论文《 隐函数XY=ex+y的作图》刊登在1992年《中专数学》第四期上。近年与镇江同学臧正松联手摸 索“分组问题”,大有进展,已撰写出系列论文。其首篇《球盒问题的最终解决》发表在华 中师范大学主办的《高等函授学报》1998年第四期上,1999年撰写专著《再论幻方》,五讲八万余字及VB制作程序,多有创新理论提高!部分章节发表在《延安教育学院学报》上。

下面的程序是根据蓸陵老师的程序改编的,可以在电子表格中闪电般地呈现出来。

Sub 奇数阶幻方()  '
 u = 1: v = 0 '预置转向步(u, v)
n = Cells(2, 1)
q = 1: p = 2: t = 1
b = n \ 2 + 1
i = 1: j = b '跳跃起点C(i, j)
If n Mod 3 = 0 Then p = 1
Cells(i + 3, j + 3) = 1 '开始数
While t < n * n
If t Mod n = 0 Then
i = i + u: j = j + v
Else  '逢转向数转向步(u, v)
i = i - p: j = j + q
End If   '向下跳跃马步(p, q)
If i < 1 Then i = i + n '界外复位
If i > n Then i = i - n
If j < 1 Then j = j + n
If j > n Then j = j - n
t = t + 1
Cells(i + 3, j + 3) = t '幻方数组
Wend
End Sub

在幻方构造中,单偶阶幻方是最难构造的,故所编的VB程序也是最复杂的。4m+2阶幻方使用了山西李宏晋老师的对角线对调方法,但是构造过程中,高老师遇到许多困难,由于参数选择不当,开始的程序得到的幻方列和不相等的,后来他参考了贵州施学良书籍中的三向异位法,首先对主对角线对调,然后在进行上下左右对调,才获得成功。山西李宏晋老师说,采取不同的对调方式,会得到不同的幻方,所以此程序再作探讨后,是可以改进的。

Sub 单偶阶幻方()
n = Cells(2, 1)
Dim a(999, 999)
'第一步
For i = 1 To n
For j = 1 To n
a(i - 1, j - 1) = n * (i - 1) + j
Cells(i + 3, j + 3) = n * (i - 1) + j
Next j
Next i
'第二步 主对角线对调
For k = 1 To n / 2
 Cells(k + 3, k + 3) = a(n - k, n - k) '对角线对调
 Cells(n - k + 4, n - k + 4) = a(k - 1, k - 1) '主对角线对调
 Cells(k + 3, n - k + 4) = a(n - k, k - 1) '上下对调左v
 Cells(n - k + 4, k + 3) = a(k - 1, n - k) '上下对调左v
Next k
'第三步 左右对调
For m = 2 To (n + 2) / 4
For k = 1 To n / 2
 Cells(k + 3, (m - 2 + k) Mod (n / 2) + 4) = a(k - 1, n - (m - 2 + k) Mod (n / 2) - 1) '左右对调上v
 Cells(k + 3, n - (k + m - 2) Mod (n / 2) + 3) = a(k - 1, (m - 2 + k) Mod (n / 2))  '左右对调上v
 Next k
 Next m
 If n = 6 Then GoTo 100
 For m = 2 To (n - 2) / 4
For k = 1 To n / 2
 Cells(n - k + 4, (m - 2 + k) Mod (n / 2) + 4) = a(n - k, n - (m - 2 + k) Mod (n / 2) - 1) '左右对调下v
Cells(n - k + 4, n - (m - 2 + k) Mod (n / 2) + 3) = a(n - k, (m - 2 + k) Mod (n / 2))    '左右对调下v
Next k
Next m
'第三步 上下对调
For m = (n + 6) / 4 To (n - 2) / 2
For k = 1 To n / 2
Cells(k + 3, (m - 2 + k) Mod (n / 2) + 4) = a(n - k, (m - 2 + k) Mod (n / 2))    '上下对调左v
 Cells(n - k + 4, (m - 2 + k) Mod (n / 2) + 4) = a(k - 1, (m - 2 + k) Mod (n / 2))   '上下对调左v
  Next k
Next m
100
For m = (n + 6) / 4 To n / 2
For k = 1 To n / 2
  Cells(k + 3, n - (k + m - 2) Mod (n / 2) + 3) = a(n - k, n - (m - 2 + k) Mod (n / 2) - 1)  '上下对调右v
Cells(n - k + 4, n - (m - 2 + k) Mod (n / 2) + 3) = a(k - 1, n - (m - 2 + k) Mod (n / 2) - 1) '上下对调右v
Next k
Next m
End Sub
高治源老师在1995年写了一本幻方书《奇妙的幻方》,当时在陕西师范大学出版社出版时,出版社看到大量的数据,需要验证各行各列是否相等,因为数据太多,工作量太大,干着急没办法。可是现在,他却能一键验证幻方的结果,不论多少行列,这种验证是一个瞬间的事情。

Sub 行列和()
a = Cells(2, 1)
m = 4
n = 4
For j = 1 To a
b = 0
c = 0
For i = 1 To a
b = b + Cells(i + m - 1, j + n - 1)
c = c + Cells(j + m - 1, i + n - 1)
  Next i
   Cells(a + m - 1, n - 1) = Str(a) + '阶幻方'
  Cells(a + m, n - 1) = '各列和'
  Cells(a + m, j + n - 1) = b
  Cells(m - 2, a + n) = Str(a) + '阶幻方'
   Cells(m - 1, a + n) = '各行和'
  Cells(j + m - 1, a + n) = c
 Next j
End Sub


Sub 对角线的和()
a = Cells(2, 1)
m = 4
n = 4
For j = 1 To a
b = 0
c = 0
For i = 1 To a
b = b + Cells(i + m - 1, (j + i - 2) Mod a + n)
c = c + Cells(a + m - 1 - (j + i - 2) Mod a, i + n - 1)
  Next i
   Cells(a + m + 1, n - 1) = '左对角线的和'
  Cells(a + m + 1, j + n - 1) = b
   Cells(m - 1, a + n + 1) = '右对角线的和'
  Cells(j + m - 1, a + n + 1) = c
 Next j
 End Sub


Sub 清除内容()
Range('c2:zt1200').Clear
End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[原创]经典问题vba代码示例[ExcelHome技术论坛]
输入一个数,列出与之相等连续数字
幻方构造公式
自动查找合并单元格并将其解除合并、填充原合并单元格数字
遇到错误,跳过继续执行下一句
VBA 填充首行与首列
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服