大老李注:
这是我发在知乎上的一个问题,我觉得很有意思。点击“原文链接”,可以链接到知乎原文,我也会在公众号上推送优秀的回答。
是否能够构造出一个4*4的汉字的方阵,使得每一行、每一列都是一个成语或短语,并且八条成语各不相同?
比如,我能构造出一个二阶的方阵:
地雷
漏电
地雷、地漏、漏电、雷电都是正确的词组。
三阶的话,我只有一个不完善的例子:
运输处
动车长
会议室
这里,“输车议”不是一个正确的词组。
我想问的是,能否构造出4阶的?如果都是成语,那很完美。如果是合格的4字短语,那也可以。更多详情,请见下文。
我是题主,我来说明一下这个问题的背景。
不久前看到高德纳(Donald Ervin Knuth,1938 - )1993年的一篇趣文,其曾编程寻找过英语单词的方阵,比如:
glass
light
agree
sheep
steps
这个方阵的特点是,每一行、每一列都是正确的英语单词。但稍感无趣的是,它是一个对称矩阵,即每个单词出现了两次。高德纳后来指出,Jeff Grant等人早在1970年代构造过非对称的单词方阵,比如:
strap
arena
laval
amene
salad
其中的10个单词各不相同,当然,难免会有一些生僻词。
我联想到,能否构造中文的成语方阵呢?我在知乎上搜到一篇2020年的文章[1],文章作者就搜索了中文成语方阵,得到如下结果:
这些结果已经相当不错了,但可惜的是,都是对称矩阵。每个方阵中,实际只有四条成语,而不是八条。但是,还是可以有改进的地方。
首先,该作者使用的成语数据库中,有8000多条成语,而这个github库[2]中,提供了31684条成语,所以会不会能从更大的数据库中,找到非对称的方阵?
其次,如果成语数量不够,也可以考虑使用四字短语,比如:北京大学,上班打卡,请客吃饭等等。这样,可供使用的词组范围就大大增加。
不管怎样,我希望有编程达人能构造出有趣的四阶成语或短语方阵。
附录:
看到知乎上有人给出了这样的答案
暴风疾雨
风吹雨打
骤雨暴风
雨打风吹
虽然不对称了,但“骤雨暴风“和”疾雨暴风“只差了一个同义字,且”雨打风吹“出现了两次。希望能再改进一下,使得一个方阵中,每个成语或短语只出现一次。
文章: https://zhuanlan.zhihu.com/p/524456144?utm_medium=social&utm_psn=1841497914809131009&utm_source=wechat_session
[2]github库: https://github.com/crazywhalecc/idiom-database/tree/master