摘 要: 魔方阵是一个非常有趣的数学问题,是指由自然数1―N2(N为奇数)构成的方阵,其各行、各列,以及对角线元素之和均相等。本文介绍了一种简单的排列方法,并巧用Excel中的单元格和宏代码的结合将其排列过程动态地呈显出来。
关键词: Excel 魔方阵难题 巧解
Excel是一个功能强大的电子表格管理软件,它可以帮助用户组织、计算和分析各种类型的数据,还可以生成与原始数据相连接的各种类型的***表,因而被广泛应用于统计、财务、金融和审计等众多领域。下面笔者就Excel巧解魔方阵难题作一个简要的证明。
魔方阵是一个非常有趣的数学问题,是指由自然数1―N2(N为奇数)构成的方阵,其各行、各列,以及对角线元素之和均相等(如下***所示)。魔方阵的数学排列算法很复杂,若不懂得排列规律,很难排出魔方阵。笔者在此介绍一种简单的排列方法,并巧用Excel中的单元格和宏代码的结合将其排列过程动态地呈显出来(速度由用户自己控制),呈现出来之后可借助Excel中的求和函数对各行、各列进行求和验证。更不可思议的是宏代码只有25行,简练程度胜过任何编程工具。
一、算法简介
先将所有单元格清空,读取阶数N之后把1放入第一行的中间一列,此后依次寻找2到N2这些数放入的位置,基本算法是:下一个数放在前一个数的上一行的下一列(第一行的上一行是最后一行,最后一列的下一列是第一列);如果此位置已被占用(单元格的内容非空),则将它放在前一个数的下面。
注:任一单元格(H行L列)的地址可表示为Chr(L+64) & H,其中Chr是取字符的函数。
二、用Excel实现的方法
1.界面设计
启动Excel,通过“视***”菜单打开“窗体”工具栏,在第一行添加一个按钮控件,并在弹出的对话框中单击“新建”按钮,进入宏代码编辑窗口。
2.录制宏
Sub 按钮1_单击()
N=Val(InputBox(“奇数:3…25”,“阶数”,3))
If N Mod 2=0 Or N<3 Or N>25 Then Exit Sub
T=Val(InputBox(“单位:秒”,“总时间”,5))
Columns(“A:IV”).Select
Selection.ClearContents
H=1:L=(N+1)/2
Range(Chr(L+64) & H+2)=1
Range(Chr(L+64) & H+2).Select
Range(Chr(L+64) & H+1)=N & “阶魔方阵”
For S=2 To N*N
t1=Timer
Do
Loop While Timer-t1<T/N^2
H=H-1:L=L+1
If H<1 And L>N Then H=2:L=N
If H<1 Then H=N
If L>N Then L=1
If Range(Chr(L+64) & H+2)<>“” Then
H=H+2:L=L-1
End If
Range(Chr(L+64) & H+2)=S
Range(Chr(L+64) & H+2).Select
Next S
End Sub
3.运行
关闭宏代码窗口,进入Excel后先单击任一单元格或按Esc键,以取消按钮的编辑状态;然后单击前面添加的按钮就可运行:在弹出的对话框中先输入要显示的魔方阵的阶数,后输入显示整个魔方阵所用的时间;最后就可看到魔方阵中元素的动态排列过程。感兴趣的读者可借助Excel提供的函数进行求和验证。
4.说明
如果将宏代码及界面保存成Excel文件,下次打开时将提示:该文件中包含宏,宏可能会携带病毒等信息。自己编写的这段宏是安全的,选择“启用宏”即可。本代码在Excel 2000和Excel 2003中运行通过。
三、结语
随着计算机教育的不断普及,我们感到了现代科技给我们带来的方便。我们平时要不断地学习专研,来改造我们现实生活中的一系列难题。这也是新背景新时代素质教育的要求。现在我国正处在国际大环境的激烈竞争之中,要想在各个方面处于世界的前列,教育应该勇挑重担,而动手动脑又是当前素质教育的重中之重。
参考文献:
[1]朱明.Excel数据透视表应用大全[M].北京:人名邮电出版社,2009.
[2]李世贤.实用计算机应用[M].北京:人名邮电出版社,2005.
[3]李笑来.把时间当做朋友――应用心智获得***[M].北京:电子工业出版社,2009.
转载请注明出处学文网 » 巧用Excel解魔方阵难题