一、扩展四阶幻方

最近有人在@wayne的聊之斋微信群中问到一个填数谜题
请将1~24不重不漏地填入如图1所示24个格子中,使得所有的18个平立正方形,各四角之和皆相等。

扩展四阶幻方图(空格) 带标尺的幻方格
图1 扩展幻方的空格 图2 带标尺的扩展幻方
这个图可称之为扩展四阶幻方,因为其中间4×4正方形构成一个四阶模幻方。
为了便于描述,我们采用Excel的标尺标记格子,如图2所示。

显然,扩展部分的相邻两格如 A3与A4 可以互换,C1与D1,C6与D6,F3与F4亦是。仿佛这不是两格,而是在一个长条格中填的两个数。为了消除这种缺陷,我们给它增加一种约束,要求像 {A3,C1,E3,C5}这样的倾斜45°的3×3正方形的四角之和也等于上述规定的和。

我们以下欣赏的就是这种增加了约束的扩展四阶幻方。

二、中间4×4部分——四阶模幻方

【定义1】 (四阶模幻方)指每格填有{a_1, a_2, a_3, …, a_{16}} 中1个数的无穷大方格网,其上任一4×4正方形中恰好包含{a_1, a_2, a_3, …, a_{16}}这16个数,并且构成一个四阶幻方。

四阶模幻方是周期性的,为其上任一个4阶幻方的平铺。因此一般用其上的任意一个4阶幻方代表该模幻方。显然,一个4阶模幻方有16个代表幻方,它们是用一个4×4正方形取景框在同一个模幻方不同位置的平移取景。

**【四阶模幻方性质1】** 四阶模幻方中任一平立正方形的四角之和等于幻和。

这个性质容易证明,简述如下:
正方形的四角组只有两种:1、2×2正方形的四角,2、3×3正方形的四角。
(或曰还有4×4正方形的四角呀,由于周期性,这个在模幻方中就是一个2×2正方形)
模幻方可以划分为4个2×2方块,或者4个3×3正方形的四角组。
记4块的和为Σ_{11},Σ_{12}, Σ_{21},Σ_{22} , 它们构成一个2阶幻方,故Σ_{11}=Σ_{12}= Σ_{21}=Σ_{22}=Σ(幻和)。

反过来,如果按平立正方形等和约束来定义四阶模幻方,也能得出幻方各行、各列和各对角线等和的结论。
因为任意两行(列)之合都是俩平立正方形之合,故行、列皆等和。
任意俩无公共格的正交对角线之合都是俩平立正方形之合,故对角线皆等和。
这就证明了上述扩展幻方的中间4×4正方形等价于一个4阶模幻方。

按图2标记,在四阶模幻方中,按周期性有
A3=E3, A4=E4\\ F3=B3, F4=B4\\ C1=C5, D1=D5\\ C6=C2, D6=D2
在扩展幻方中,自然不许这样,但却保持了
A3+A4=E3+E4\\ F3+F4=B3+B4\\ C1+D1=C5+D5\\ C6+D6=C2+D2
可见扩展幻方的扩展部分保持部分模属性(周期性),是一个不错的构思。

三、扩展部分的额外约束

【定义2】(对径格)四阶模幻方的一条对角线上的相间两格称为彼此的对径格。
说明:这个定义是合理的,因为在两个方向的对角线上,对径格是同一个,故具有唯一性。

【四阶模幻方性质2】对径格之和等于幻和的一半。

比如:
(B2+D4)+(C3+E5)=Σ(一条对角线),
(B2+D4)+(B4+D2)=Σ(一个3×3平立正方形的四角),
(B4+D2)+(C3+E5)=Σ(一条对角线)
B2+D4=B4+D2=C3+E5=Σ/2.
由于模幻方的周期性,所以其它对径格之和同样等于Σ/2

【定义3】(对偶数)和等于Σ/2的两数。

性质2表明对偶数正好处于对径格中。扩展幻方的备选数集大小对称地匹配为12对对偶数,在中间4×4部分包含了8对对偶数。故扩展部分包含了4对对偶数。

增加的3×3倾斜正方形约束有一边正好是一对对径格,所以扩展部分所含4对对偶数也处于扩展“对径格”中,即
A3+C1=D1+F3=F4+D6=C6+A4=Σ/2.
容易证明,这使得 {C1,D2,E3,F4}这样的扩展对角线四格之和也等于幻和。
PS:扩展格不能向内找对径格,比如C1不能找E3为对径格,否则会使得C1=C5(E3的对径格).

四、四阶模幻方的二进制参数解

四阶模幻方中的所有数同时减去1(更大也行),仍然是一个四阶模幻方。所以同时减去其中的最小数,就可以变成最小数为 0 的幻方。
我们取B2=0的代表幻方,容易证明 D4=E4+D3+C4+D5=Σ/2。(按图2中的标尺)
取E4=a, D3=b, C4=c, D5=d, 易得四阶模幻方的其它各格用a,b,c,d表示如下(省略了加号,下文皆如此):

图3 四阶模幻方的代数解
图3 四阶模幻方的代数解
这个代数解妙在16格包含的参数刚好取自{a,b,c,d}的幂集。
所以,要使得各数为0, 1, 2, …, 14, 15,当且仅当{a,b,c,d}={1,2,4,8}.
即各数用二进制表示,幻和=1111的2倍,各符合幻和约束的四数合计刚好各位各含两个1.

abcd的环排列为6个,再取消环向差别,则为3个,所以四阶模幻方在排除旋转、反射对称的重复解后,只有3个本原解。
可以固定a=8, 让 c 取1, 2, 4即可得3个本原解(b,d反射对称,顺序任意)。

四阶模幻方的代数解和3个本原解
图 四阶模幻方的代数解和3个本原解

五、扩展幻方的二进制解(一)

在扩展幻方中,中间的4×4模幻方的所用数组不是0, 1, 2, 3, …, 14, 15. 因为这时Σ=46,不再是30.
所以{a, b, c, d}不能取{1, 2, 4, 8}了。怎么办,二进制要如何兑现?
我们发现 1+2+4+16=23=Σ/2, 所以可以取{a, b, c, d}={1, 2, 4, 16}.

也就是中间部分取5位二进数,第4位都是0. 为{0,1,…,7,16,17,…,23}
扩展部分取4位二进数,首位都是1. 为{8,9,…,15}.
整个数组{0,1,2,...,23}被均分成为3段,每段8数,中段在外围,两头在中间。

例如,取a=16, b=4, c=2, d=1得到两解如下:

扩展四阶幻方的二进制解
图5 扩展四阶幻方的二进制解

我们按图3的4阶模幻方参数解得到的扩展幻方这种二进制参数解如下:
图中a=16, b=8, {c, d, e}={1, 2, 4}.
把图中的7,8,15,16,23等还原为cde, b, bcde, a, acde,可以观察到参数分布的均匀性。

扩展幻方的二进制参数解
图6 扩展四阶幻方的二进制参数解

这两个图的中间部分是相同的,扩展部分有此两配。
原因在于扩展部分8格只有7个独立约束,故配解会比四阶模幻方多出一个参数来,结合连续整数条件,此参数可有两选。
{c, d, e}取{1, 2, 4}的排列为6种,故图中每个参数解实际包含6个数字解,实得12解。

六、扩展幻方的二进制解(二)

由于扩展幻方在整体上不具有模幻方那样的周期性,因此中间的4×4 模幻方的代数解不能固定为3#那一个代表。
要得到其它解,模幻方的取景框需要进行适当的平移,选取其它代表。
由于a=16, 像C2, D2这样与扩展部分相邻的两格不能同时出现参数 a, 否则C1+D1<46-32=14, 但扩展部分的所用数组为{8,9,…,15}.
明此限制,根据参数 a 的分布特点可知取景框在水平方向只能以步长2列进行平移。

竖直方向可以取步长1~3行作平移,但是取景框下移 1 行(或者上移 3 行)使 0 位于左下角的结果,只是参数c, e的一个对易+上下反射变换,实为重复解。
同样,取景框上移 1 行(或者下移 3 行)使 16 位于右下角的结果,只是在上移(下移一样)2行的结果+参数c, e的一个对易+上下反射变换,实为上移2行的重复解。
可见不致重复的平移变换群为{+(0, 0), +(2, 0), +(0, 2), +(2, 2)},故可得到四种中心,每个中心有2种外配,故共有8个参数解。
全部参数解如下图所示:
图中a=16, b=8, {c, d, e}={1, 2, 4}.

扩展幻方的二进参数解
图7 扩展幻方的二进参数解

图中每个参数解包含6个数字解,共可得48解。

七、非二进制解——0在中间

一般参数解

图6和图7中,零在中间的参数解取定了 a=16, b=8, {c,d,e}={1, 2, 4}, 可能会漏掉很多其它解。因为数组不再限定为{0,1,2,…,15}时,可能取其它参数满足不重复要求。我们重新检查一下。
0在中间4×4幻方左上角时参数解如下(其它位置可由此解如4#那样中间4×4重新取景得到):

扩展四阶幻方---0 在中间的参数解
图8 扩展四阶幻方—0 在中间的参数解

左右两解的中间相同,外围取数范围便相同,只需要作出左边的解,右解调整一下位置而已。
记 ad-2f=g, 我们看到外围的所用数组可分解为 f+{0,b}+{0,c}+{0,g},这显然对应{b,c,g}的幂集。
记外围数组从小到大为{a_1,a_2,…,a_8},参数的幂集结构蕴含以下要求(便于程序实现):

1) {a_5,a_6,a_7,a_8}=b,c或者g+{a_1,a_2,a_3,a_4};
2) {b,c}\in{a_2,a_3,a_5}-a_1.

有此特征,就不难计算搜索符合要求的{a, b, c, d},不需要完整的程序,人机对话足矣。

out8[x_]:=Complement[Range[0,23],Plus@@@Subsets[x]];
bcg[x_]:=out8[x][[{2,3,5}]]-First@out8[x];
abcd=Select[IntegerPartitions[23,{4}],DuplicateFreeQ[Plus@@@Subsets[#]]&&
     Length@Union@(out8[#][[5;;]]-out8[#][[;;4]])==1&&
     Length[#\[Intersection]bcg@#]>1&];
{#, bcg@#, out8@#}&/@abcd//MatrixForm

搜索结果

{{ a, b, c, d}, {b, c,  g}, {外围数组}}
{{16, 4, 2, 1}, {1, 2,  4}, {8, 9, 10, 11, 12, 13, 14, 15}},
{{14, 6, 2, 1}, {1, 6,  8}, {4, 5, 10, 11, 12, 13, 18, 19}},
{{13, 6, 3, 1}, {3, 6, 10}, {2, 5,  8, 11, 12, 15, 18, 21}},
{{12, 8, 2, 1}, {1, 2, 12}, {4, 5,  6,  7, 16, 17, 18, 19}},
{{12, 7, 3, 1}, {3, 4, 12}, {2, 5,  6,  9, 14, 17, 18, 21}},
{{12, 6, 4, 1}, {1, 6, 12}, {2, 3,  8,  9, 14, 15, 20, 21}},
{{12, 6, 3, 2}, {3, 6, 12}, {1, 4,  7, 10, 13, 16, 19, 22}},
{{12, 5, 4, 2}, {2, 7, 12}, {1, 3,  8, 10, 13, 15, 20, 22}},
{{10, 8, 4, 1}, {1, 4, 14}, {2, 3,  6,  7, 16, 17, 20, 21}},
{{ 9, 8, 4, 2}, {2, 4, 15}, {1, 3,  5,  7, 16, 18, 20, 22}}

{b,c,g}中b,c是来自中间4X4区域的参数表{a,b,c,d}的,如果g=a或者d——比如等于d吧—— 即也来自中间区域的参数表,那么中间参数表中b,c,d就是可以互换的,参数表按互换性分组为{{a}{b,c,d}}。固定a,{b,c,d}互换有6种排列,对应6个不同的解。
如果g不在{a,d}中,那参数表按互换性分组为{{a,d}{b,c}}. 这种分组有4种排列,对应4个不同的解。

例图

结果的第一行就是前面给出过的二进制解,其它9行则为非二进制解,各列一组代表如下。

第2行 {{14, 6, 2, 1}, {1, 6, 8}, {4, 5, 10, 11, 12, 13, 18, 19}}

图9
图9 参数互换4种组合,取景平移4变,共16解
第3行{{13, 6, 3, 1}, {3, 6, 10}, {2, 5, 8, 11, 12, 15, 18, 21}}
图10
图10 参数互换4种组合,取景平移4变,共16解

第4行 {{12, 8, 2, 1}, {1, 2, 12}, {4, 5, 6, 7, 16, 17, 18, 19}}

图11
图11 参数互换6种组合,外配2种,取景4变,共48解
第5行 {{12, 7, 3, 1}, {3, 4, 12}, {2, 5, 6, 9, 14, 17, 18, 21}}
图12
图12 参数互换4种组合,取景平移4变,共16解

第6行 {{12, 6, 4, 1}, {1, 6, 12}, {2, 3, 8, 9, 14, 15, 20, 21}}

图13
图13 参数互换6种组合,外配2种,取景4变,共48解

第7行 {{12, 6, 3, 2}, {3, 6, 12}, {1, 4, 7, 10, 13, 16, 19, 22}}

图14
图14 参数互换6种组合,外配2种,取景4变,共48解
第8行 {{12, 5, 4, 2}, {2, 7, 12}, {1, 3, 8, 10, 13, 15, 20, 22}}
图15
图15 参数互换4种组合,取景平移4变,共16解
第9行 {{10, 8, 4, 1}, {1, 4, 14}, {2, 3, 6, 7, 16, 17, 20, 21}}
图16
图16 参数互换4种组合,取景平移4变,共16解
第10行 {{ 9, 8, 4, 2}, {2, 4, 15}, {1, 3, 5, 7, 16, 18, 20, 22}}
图17
图17 参数互换4种组合,取景平移4变,共16解

八、非二进制解——0在外围

一般代数解

扩展幻方的中间模幻方不一定有0,假定中间的最小数为 e>0。所有数都减去e后,中间重新变成最小数为0的模幻方,其参数解之一即为图3。将图3各格全部加上 e, 即得一般解,如下图18所示:

图18
图18 四阶模幻方一般代数解

然后据此配外围参数得

图19
图19a 四阶扩展幻方——零在外围代数解

0在外围,比较一下可以知道必是e-f或者ade+f, 故取f=e或者-(ade), 代入得

图19b
图19b 四阶扩展幻方——零在外围代数解

所得仍然是两图,可见图19a中左右两图实为重复,可由f的变换取值而统一。

搜索结果

Mathematica小程序

out8[x_]:=Complement[Range[0,23],(23-Total@x)/2+Plus@@@Subsets[x]];
bcg[x_]:=out8[x][[{2,3,5}]]-First@out8[x];
ff[n0_]:=Module[{n=n0},abcd=Select[IntegerPartitions[23-2n,{4}],
      DuplicateFreeQ[Plus@@@Subsets[#]]&&
        Length@Union@(out8[#][[5;;]]-out8[#][[;;4]])==1&&
        Length[#\[Intersection]bcg@#]>1&];
    {#,bcg@#,out8@#}&/@abcd]//MatrixForm;
Table[n,ff[n]},{n,4}]

输出

e=1时,输出了5组参数
{{ a, b, c, d}, {b, c,  g}, {外围数组}}
{{12, 6, 2, 1}, {5, 6, 12}, {0, 5, 6, 11, 12, 17, 18, 23}},
{{12, 5, 3, 1}, {3, 8, 12}, {0, 3, 8, 11, 12, 15, 20, 23}},
{{12, 4, 3, 2}, {2, 9, 12}, {0, 2, 9, 11, 12, 14, 21, 23}},
{{11, 6, 3, 1}, {3, 6, 14}, {0, 3, 6,  9, 14, 17, 20, 23}},
{{ 8, 7, 4, 2}, {2, 4, 17}, {0, 2, 4,  6, 17, 19, 21, 23}}
e=2时,输出了3组参数
{{12, 4, 2, 1}, {1,10, 12}, {0, 1,10, 11, 12, 13, 22, 23}},
{{10, 6, 2, 1}, {1, 6, 16}, {0, 1, 6,  7, 16, 17, 22, 23}},
{{ 8, 6, 4, 1}, {1, 4, 18}, {0, 1, 4,  5, 18, 19, 22, 23}}
e=3时无解(可以预料)
e=4时,输出了1组参数
{{8, 4, 2, 1}, {1, 2, 20}, {0, 1, 2, 3, 20, 21, 22, 23}}

例图

e=1,第1行 {{12, 6, 2, 1}, {5, 6, 12}, {0, 5, 6, 11, 12, 17, 18, 23}}
图20
图20 参数互换4种组合,取景平移4变,共16解
e=1 第2行 {{12, 5, 3, 1}, {3, 8, 12}, {0, 3, 8, 11, 12, 15, 20, 23}}
图21
图21 参数互换4种组合,取景平移4变,共16解
e=1 第3行 {{12, 4, 3, 2}, {2, 9, 12}, {0, 2, 9, 11, 12, 14, 21, 23}}
图22
图22 参数互换4种组合,取景平移4变,共16解
e=1 第4行 {{11, 6, 3, 1}, {3, 6, 14}, {0, 3, 6, 9, 14, 17, 20, 23}}
图23
图23 参数互换4种组合,取景平移4变,共16解
e=1 第5行 {{ 8, 7, 4, 2}, {2, 4, 17}, {0, 2, 4, 6, 17, 19, 21, 23}}
图24
图24 参数互换4种组合,取景平移4变,共16解
e=2
{{12, 4, 2, 1}, {1,10, 12}, {0, 1,10, 11, 12, 13, 22, 23}},
{{10, 6, 2, 1}, {1, 6, 16}, {0, 1, 6, 7, 16, 17, 22, 23}}
{{ 8, 6, 4, 1}, {1, 4, 18}, {0, 1, 4, 5, 18, 19, 22, 23}}
图25a图25 图25c
图25 参数互换4种组合,取景平移4变,各16解
e=4 {{8, 4, 2, 1}, {1, 2, 20}, {0, 1, 2, 3, 20, 21, 22, 23}}
图26
图26 共16解

九、另辟蹊径(mathe的手工解法)

img1

扩展四阶幻方通解可以如上图,其中x+y=a+d+2e
通常情况下b,c可以相互交换,a,d可以互换,x,y可以互换,会有另外的8种对称情况。
其中它们全部交换,相对于对幻方做置换,所以29#提到的108中不同情况可以再除以4,于是结果减少到只有27组。
另外我们可以记f=e+a,g=e+d,h=e+a+d, 于是我们知道满足条件的方案中间16个数使用了{e,f,g,h} + {0,b,c,b+c}
而边上八数使用{x,y}+{0,b,c,b+c}, 而且其中x+y=f+g=e+h,
由此我们可以知道,对于满足条件的方案中,{x,y},{f,g},{e,h}三者也可以轮流置换,也就是扩展8格,对角线8格和余下8格可以置换。在这个意义下,我们还需要继续除以3,只有余下9组不等价的解。
另外,对于中间16格的数值e被置换到边上以后,即不在留在中间16格的角上或者中心四格,比如,中间16格的第四行被移动到第一行,而其余三行向下移动一行以后
我们会发现置换前的图上下左右各自扩展数据的和为\Sigma/2-c,\Sigma/2+c,\Sigma/2-b,\Sigma/2+b, 但是置换后,要求添加的变成了
\Sigma/2+c, \Sigma/2-c, \Sigma/2+d,\Sigma/2-d, 于是我们没法直接将e在角上的情况转化为e在边上的情况。
但是这时,我们可以在此通过将中间16格数据中的所有b和d进行交换,使得扩展数据和的要求也转变为缺\Sigma/2+c,\Sigma/2-c,\Sigma/2+b,\Sigma/2-b
于是可以轻松得到一个满足条件的解,如下图。
img2

所以e在边上和e在角上的情况也可以一一对应,由此我们最终必然可以仅通过9组不等价的解给出满足条件的所有的扩展四阶幻方。

现在问题等价找找出0<b<c, e=0<f<x<y<g<h, 其中e+h=f+g=x+y,
使得{0,b,c,b+c} + {e,f,x,y,g,h}正好覆盖0~23中所有数的方案。
显然可以得出这时b+c+h=23
于是可以有
b=1,c=2, h=20
{0,b,c,b+c}+e={0,1,2,3},所以f=4,g=h-f=16, x=8,y=12
b=1,c>2
{0,b,c,b+c}+e={0,1,c,c+1}, 所以f=2, {0,b,c,b+c}+f={2,3,c+2,c+3} ,于是要求c \ge 4
于是 b=1,c=4, f=2,h=18,g=16时
{0,b,c,b+c}+e={0,1,4,5}, {0,b,c,b+c}+f={2,3,6,7} ,得出x=8,y=12
于是 b=1,c>4, f=2时
{0,b,c,b+c}+e={0,1,c,c+1}, 所以f=2, {0,b,c,b+c}+f={2,3,c+2,c+3} ,于是要求x=4,得出
b=1,f=2,x=4
{0,b,c,b+c}+e={0,1,c,c+1}, {0,b,c,b+c}+f={2,3,c+2,c+3} ,{0,b,c,b+c}+x={4,5,c+4,c+5}, c\ge 6
如果c=6,得出
b=1,f=2,x=4,c=6
{0,b,c,b+c}+e={0,1,6,7}, {0,b,c,b+c}+f={2,3,8,9} ,{0,b,c,b+c}+x={4,5,10,11}, 所以y=12,g=14,h=16
如果c>6,得出y=6,所以
b=1,f=2,x=4,y=6,g=8,h=10,得出
{0,b,c,b+c}+e={0,1,c,c+1}, {0,b,c,b+c}+f={2,3,c+2,c+3} ,{0,b,c,b+c}+x={4,5,c+4,c+5},{0,b,c,b+c}+y={6,7,c+6,c+7},{0,b,c,b+c}+g={8,9,c+8,c+9},{0,b,c,b+c}+h={10,11,c+10,c+11},得出c=12
由此手工穷举得出b=1的所有情况
类似可以很容易继续穷举出b>1的情况,这时f=1
结果查看链接
b c e f x y g h
1 2 0 4 8 12 16 20
1 4 0 2 8 12 16 18
1 6 0 2 4 12 14 16
1 12 0 2 4 6 8 10
2 4 0 1 8 9 16 17
2 12 0 1 4 5 8 9
3 6 0 1 2 12 11 12
3 12 0 1 2 6 7 8
6 12 0 1 2 3 4 5