Observe the above 5x5 matrix of Chinese characters: when read horizontally, it consists of five lines from five different poems, and so does it when read vertically, of the exact same lines. I call it the magic square of Chinese poems. With a brute -force-search over 287,000 lines from the Complete Collection of Tang Dynasty Poems , I discovered 2 such sets. You can reproduce my results by running gcc -O3 mgsq5.c; ./a.out
.
風月清江夜
月出夜山深
清夜方歸來
江山歸謝客
夜深來客稀
诸君试观此二十五言:纵读之,诗五句也,横读之,亦此五句。各出唐人名家之手:风月清江夜,卢照邻之诗也;月出夜山深,张祜之诗也;清夜、江山、夜深,太白、高适、张籍之诗也。余闻洛出书,有数至于九,纵横和十五。此非诗中之洛书也欤?故名之曰:唐诗幻方。昔窦滔妻为璇玑图,苏伯玉妻为盘中诗。余才不及,遂书程序遍索唐人诗句而得之。反覆赏玩,以为妙绝,乃公诸此,以资众人一笑耳。
全唐五言合二十八万七千句,遍历之,堪为幻方者,唯二。适其一也。其二者,辄语句平淡翻覆,兴味不如也:
心如七十人
如何十年間
七十未成事
十年成底事
人間事事慵
首二句,出白乐天,以下出姚合、李昌符、李山甫。此五十字外,五言之幻方不可复得,三言之幻方乃不可胜数。聊拣其一二雅链者,以备一观:
拂秋水
秋夜長
水長東
出任华、白居易、李煜也。
惜春心
春歌斷
心斷絕
出钟辐、李珣,卢同也。其余录于是。
七言幻方尤难于五言远甚。全唐十三万五千六百句,未得其一焉。故为宽限,但拘四句一三五七字耳。所得遂众。复欲择其平仄押韵合于格律,于理通顺者,则鲜矣。何耶?使二四句押韵,末句三七字必同韵,犯八病之中小韵之目矣,故唐人不多为也。
七言绝句平起首句不入韵者一:
長江九派人歸少
江 曲 面 年
九曲寒波不溯流
派 波 知 落
人面不知何處在
歸 溯 處 并
少年流落在并州
纵横隔行读之。出皇甫冉、李煜、崔护、薛能。首二句一言长江,一言黄河,似不得法。末二句方点出缘由:胡为两地寻之而不得其人焉,盖彼流落并州去也!亦甚滑稽堪为一笑也。
其余虽间有堪读者,或病折腰,或病重韵,尽录于此。
余所用之程序,当以gcc编译之如是:
gcc -O3 mgsq5.c -o mgsq5
复运行之,即得五言幻方焉:
./mgsq5
亦可与之以文本路径、起讫行数也:
./mgsq5 5.txt 0 10000
七言幻方亦同:
gcc -O3 mgsq7.c -o mgsq7 ;
./mgsq7
然应无所得,盖不存于全唐诗中也。退而求其前述宽限之格如是:
gcc -O3 mgsq7x.c -o mgsq7x ;
./mgsq7x
初,余欲以八后法求唐诗幻方。然其二十五字,每字可填者五千余,虽复以启发法为之助,终漫漫不可期其果。细思之,何耶?剪枝苦不早也。或填前字,其于时尚可者,实暗绝后字之路,然程序浑不知,递归无功方还。余思治之烦甚,不若易以逐行暴力搜索也。虽云暴力,然亦预存一至四字前缀于哈希集焉。每横取若干行,乃纵索其五列于表,不存辄立弃之。又其方阵必以对角对称,若非,亦立弃之。旋以C语言作之,行不逾一时,遂得。
余于算法颇无用意,学诗亦未特工。故所想未必为佳,其法亦未必为速。诸公有妙思者,吾谨愿闻焉。