一探汉语中的文字幻方

    大家都知道,幻方是这样一种数字游戏,将 1 到 n^2 这 n^2 个数填入 n×n 的方阵中之后,每行、每列及两条对角线上的数字之和都相同。作为一个古老的数学游戏,幻方的生命力极强,直到现在数学家们还在寻找满足各种奇怪性质的幻方。更有意思的是,这神奇的数字方阵后来竟也发展成了文字游戏。人们发现,在 4×4 的方阵中填入以下字母,每行每列都是一个单词:

C A R D
A R E A
R E A R
D A R T

    这样的字母方阵就被称为“文字幻方” (word square) 。

    最近本人对文字游戏尤其感兴趣,心头开始思考起这么一个问题:是否有可能在方阵中填入汉字,让每行每列都是一个词语呢?看着电脑桌面上放着上次寻找 中文 piphilology 的词库,我就又手痒了,于是花了一下午的时间,利用 Mathematica 对汉字幻方作了一些搜索。下面和大家分享一下我得到的结果。


    由于汉语的四字词很多,因此我的主要精力放在了寻找 4 阶汉字幻方上。估计大家不会想到,构造一个汉字幻方比构造英文幻方容易得多——这得归功于汉语中独有的叠词。只需要找到一对形如 AABB 和 BBCC 的词,我们就立即得到了一个 4 阶幻方。例如:

匆匆忙忙
匆匆忙忙
忙忙碌碌
忙忙碌碌

    这种简单的幻方是其它语言中都不大可能实现的。可以想象,这样的 4 阶幻方还有不少。根据我的词库,计算机找到了 13 组形如 (AABB, BBCC) 的词,它们是:

匆匆忙忙,忙忙碌碌
急急忙忙,忙忙碌碌
平平安安,安安静静
平平安安,安安稳稳
老老实实,实实在在
切切实实,实实在在
确确实实,实实在在
踏踏实实,实实在在
严严实实,实实在在
扎扎实实,实实在在
冷冷清清,清清白白
痛痛快快,快快乐乐
战战兢兢,兢兢业业

    可见, 4 阶汉字幻方至少有 13 个。

    不过,大多数读者会认为这样的幻方太“平凡”了吧。有没有什么其它的 4 阶汉字幻方呢?有。在寻找其它形状的汉字幻方时,计算机给出了下面这组解:

可有可无
有职有权
可有可无
无权无势

    这使得幻方中实际包含的词语原来的 2 个增加到了 3 个。不过,这样的结果似乎仍然不太完美,我希望得到的是 4 个词语都不相同的汉字幻方。这种完美的 4 阶幻方究竟存在吗?一方面,由于包含某个特定汉字的词数量很有限,因此构造完美的汉字幻方显然比构造英文幻方困难得多;而另一方面,汉语造词时语素和语义的关联性又为汉字幻方的存在提供了有利的条件。如果我们能找到一个“语义圈”,这个圈子里的词总是那几个字,在它们之间就很容易产生一个幻方。有幸的是,这样的语义圈是存在的——计算机找到了这样一组大家耳熟能详的、尽显汉语言特色的词,构成了一个汉字幻方:

全党全国
党和国家
全国人大
国家大事

    不过,上面这个幻方还有一点美中不足的是,第一个词用到了相同的字。能够避免同一个词内的字都不一样吗?是的。计算机给出下面这个完美的 4 阶汉字幻方。

西欧各国
欧洲国家
各国人民
国家民委

    这种满足用词不重复,并且每个词内也无重字的 4 阶幻方可以说是相当罕见。在我所用的词库中,上面这个 4 阶幻方是唯一的解。

 
 
    或许有的读者还不满足:上面这些幻方都是依赖于对称性的。有没有可能创作一个非对称的文字幻方呢?换句话说, n 个横向单词和 n 个纵向单词能否都不相同?在英文文字游戏中,这叫做“双文字幻方” (double word square) 。人们发现了不少双文字幻方,比如:

L A C K
I R O N
M E R E
B A K E

    在汉语中,存在 4 阶双文字幻方的希望太渺茫了,不过 3 阶双汉字幻方倒有可能存在。事实上,由于英文是一个只有 26 个字母的拼音文字,而常用汉字就有数千个,因此我们或许能做到一件英文文字幻方望尘莫及的事情:不但 2n 个词语互不相同,连格子中的 n^2 个字也互不相同。遗憾的是,计算机并没有找到这般完美的双汉字幻方。最接近的两个结果如下:

 
    只有两个重复字的 3 阶双汉字幻方:

山东省
西北部
省部级

 
    只有一个重复字的 3 阶双汉字幻方:

中新社
学生会
生活上

 
    由于汉语词汇大多是双字词,因此创作 2 阶的双汉字幻方就容易多了。利用汉字双字词的构词特点,我们不但能保证 2 阶双汉字幻方中的 4 个字都不一样,还能保证方阵的两条对角线也恰好成词。例如:

天上
地下

 
    这一下午搜索出来的结果多少算是补上了汉语文字游戏中的一块空白,但文字幻方的探索远未结束。如果扩大词库,或者加入短语甚至句子,是否能构造出阶数更高的文字幻方呢?有待万能的网友们继续努力了。

28 条评论

发表评论




Enter Captcha Here :