(1)预填
将数集{1,2,…,n*n}中的数字填入n*n的表格,使得:减去1后除以n得到的商的值相同的数字在同一行;减去1后除以n得到的余数相同的数字在同一列;商的值相加的和为n-1的两行相邻;余数相同的和为n-1的两列相邻。
A B C D E F G H I J
1 x[0] n-1-x[0] x[1] n-1-x[1]
2 y[0] =$A2*n+B$1+1
3 n-1-y[0]
4 y[1]
5 n-1-y[1]
6
7
8
9
10
说明:
在电子表格中,公式中单元格的引用分为三种:相对引用;绝对引用;混合引用。在用电子表格来实现“预填”时,用到了混合引用:$A2, B$1 , $A2是列不变,行变化;B$1 是行不变,列变化。
以8阶幻方为例:
取x[0]=0,x[1]=1,x[2]=2],x[3]=3;
取y[0]=0,y[1]=1,y[2]=2,y[3]=3 .
预填的结果如下:
1 8 2 7 3 6 4 5
57 64 58 63 59 62 60 61
9 16 10 15 11 14 12 13
49 56 50 55 51 54 52 53
17 24 18 23 19 22 20 21
41 48 42 47 43 46 44 45
25 32 26 31 27 30 28 29
33 40 34 39 35 38 36 37
将预填得到的n*n表格,分割成N*N个4*4的方块,每个4*4方块,包含4*4个数字,并且依据子块模型能得到对应的4*4子块。
4*4方块中包含的数字可以表示为:
集合Y={y[0],n-1-y[0],y[1],n-1-y[1]}与集合{ x[0],n-1-x[0],x[1],n-1-x[1]}的乘积。(减去1后除以n得到的商值在集合Y中取值,减去1后除以n得到的余数在集合X中取值)
说明:
前述的分割方法是对“预填”表格作“连续的取值”,得到的子集均在连续的4行和4列上。这样做的目的是:降低分割的复杂程度,确保在分割中不出现“重复”和“遗漏”。而“连续取值”并不是惟一的“分割”方法,分割只需要保证:每个子集均能表示成{y[0],n-1-y[0],y[1],n-1-y[1]}与{x[0],n-1-x[0],x[1],n-1-x[1]}的乘积,且 不同子集中无重复数字。
(2)4*4子块模型
在集合Y与{-1,1,-2,2}之间建立一一对应关系,使:集合Y中相加和为n-1的两个数在{-1,1,-2,2}中对应的数互为相反数;(y[0]__1 , n-1-y[0]__-1 , y[1]__2 , n-1-y[1]__-2)
在集合X与{-1,1,-2,2}之间也建立类似的一一对应关系(x[0]__1, n-1-x[0]__-1 , x[1]__2 , n-1-x[1]__-2).
由此,Y*X与{(a,b) | a,b∈{-1,1,-2,2}}存在一一对应关系。依照(a,b)在下表中的位置,将与之对应的y*n+x+1填入4*4表格的相同位置,即可得到对应的子块。
(1,1) (-1,2) (1,-1) (-1,-2)
(2,-1) (-2,-2) (2,1) (-2,2)
(-1,1) (1,2) (-1,-1) (1,-2)
(-2,-1) (2,-2) (-2,1) (2,2)
子块法也可以用电子表格来实现。
A B C D E F G H I
1 阶数 商值 余数
2 8 0 1 0 1
3 商值表格
4 =C2 =A2-1-C2 =C2 =A2-1-C2
5 =D2 =A2-1-D2 =D2 =A2-1-D2
6 =A2-1-C2 =C2 =A2-1-C2 =C2
7 =A2-1-D2 =D2 =A2-1-D2 =D2
8 余数表格
9 =F2 =G2 =A2-1-F2 =A2-1-G2
10 =A2-1-F2 =A2-1-G2 =F2 =G2
11 =F2 =G2 =A2-1-F2 =A2-1-G2
12 =A2-1-F2 =A2-1-G2 =F2 =G2
13 子块
14 =A4*$A$2+A9+1
15
16
17
18
19
20
实例:
n=8, x[0]=0, x[1]=1, y[0]=0,y[1]=1
根据4*4模型得到的8阶幻方的4*4子块为:
1 58 8 63
16 55 9 50
57 2 64 7
56 15 49 10