奇数阶幻方自动生成系统设计

时间:2022-07-06 12:43:56

奇数阶幻方自动生成系统设计

摘要:该文介绍了幻方的一些基本知识,介绍了奇数幻方的手工设计方法。通过研究手工设计方法得到了计算机自动生成的算法。趣味性实用性俱佳。

关键词:幻方;洛书;自动;VF

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)19-5263-02

Document Downloading System Design

CAI Zheng-quan

(Hubei National Territory Resources Occupation College, Jingzhou 434000, China)

Abstract: This article introduced magic square some elementary knowledge, introduced the odd number step magic square manual design method. Obtained the computer automatic production algorithm through the research manual design method. The interesting usability has good

Key words: magic square; luo river book; automatic; VF

1 手工实现原理

中国古代有“河图洛书”的传说。“河图”是讲“龙马”帮伏羲画“八卦”的故事。从黄河中游出的“龙马”,其身上的图案就叫做“河图”。“洛书”是讲“神龟”帮大禹治水的故事。从洛水中游出的神龟,其身上的图案就叫做“洛书”。

尽管“河图洛书”只是传说,但人们从此便开始研究有关的数学问题了。譬如:把1―16的十六个数填在4×4的方阵中,使每横行、每竖行、每斜行的四个数的和都相等,这叫做四阶幻方;把1―25的二十五个数填在5×5的方阵中,使每横行、每竖行、每斜行的五个数的和都相等,这叫做五阶幻方……等等,幻方成了人们津津乐道的数学问题。

三阶幻方又叫九宫图。按照“洛书”的填写方法就是

4 9 2

3 5 7

8 1 6

如何在纷繁中找到规律呢?首先看4、5、6的位置:4在第一行的第一列,5在4的下一行的下一列,6在5的下一行的下一列。于是有一个猜想:从1到9是否所有的数都符合这个“下行下列”的规律呢?接着我们从1开始验证:1在末行的中列。1的下一行应是第一行、下一列是第三列,这里正是2;2的下行是第二行、下列是第一列,这里恰好又是3。注意:三阶幻方有三行、三列。第三行的下一行是第一行、第三列的下一列是第一列,这里就像是在作“结束又开始”的循环往复。

通过一一验证,只有4和7不符合规律。为什么呢?原来在填3之后,3的下行下列被先填的1占去;在填6之后,6的下行下列被先填的4占去,但他们分别飞到了3和6的上面。这真是“遇阻头上飞”。

如果用口诀概括九宫图的填写方法,那么应是:末行中列起,下行下列随。结束再开始,遇阻头上飞。

奇妙的是,上述口诀不但解决了三阶幻方,而且可以推广到所有的奇数阶幻方上。

2 计算机实现程序(Visual FoxPro)

set talk off

clear

dime a(100,100)

input '请输入魔方的阶数:' to n

*给数组赋初值

for i=1 to n

for j=1 to n

a(i,j)=-1

endfor

endfor

*放1

a(n,(n+1)/2)=1

i=n

j=(n+1)/2

*放1以上的奇数

for k=2 to n*n

do case

case i+1>n.and.j+1

i=1

j=j+1

case i+1n

i=i+1

j=1

case i+1>n.and.j+1>n

i=i-1

case i+1

if a(i+1,j+1)

i=i+1

j=j+1

else

i=i-1

endif

endcase

a(i,j)=k

endfor

*输出幻方

for f=1 to n

for d=1 to n

?? a(f,d)

endfor

?

endfor

参考文献:

[1] 罗淑英.Visual FoxPro程序设计[M].北京:清华大学出版社,2006.

[2] 林波编.数据库应用基础:Visual FoxPro[M].北京:北京邮电大学出版社,2007.

[3] 陈宁编.Visual FoxPro 数据库管理系统[M].北京:中国科学技术出版社,2007.

上一篇:C#语言教学方法探讨 下一篇:基于指数损失的PCA方法研究