他用计算机,找出了所有符合规律的古诗,还在Github上开源了代码。
就连README文件,也颇具个性:
余所用之程序,當以gcc編譯之如是gcc -O3 mgsq5.c -o mgsq5
等一下。这个风格好像很熟悉?
没错,这位程序员,正是之前开发了火遍全网的文言文编程语言的Huang Lingdong。
△ 文言文编程的“Hello,World”
他用数学中的3阶幻方(九宫格)作比,把符合这种规律的诗命名为“唐诗幻方”。
然而,这首诗真正的玄妙之处,还不止在这里。
玄妙之处
这首诗,初看只是横竖都能读,但如果把其中汉字编码成数字再看的话,会发现:
原来,这是个对称矩阵!
不过,他遍历了全唐诗里所有五言诗共二十八万七千句后,也只能得出两个这样的幻方。
除了“风月清江夜”以外,还只有一个,不过意境上差了许多,不能令他满意。
在135600行七言唐诗中,符合这个规律的七言“幻方”,更是一个都没有。
他只能退而求其次,只寻找奇数项对称的,即每句第1、3、5、7个字对称,偶数行用空行代替。
放宽标准后倒是能找出不少,但再想从其中挑选符合音韵格律、意思上还通顺的,就不多了。
最后,他选择了其中一个还稍微过得去的做例子,把空行中的字也加上,也能写成对称矩阵:
这位小哥,是在研究传统文化时,从古代的洛书和璇玑图中获得的灵感。
△洛书
洛书写成数字就是三阶幻方,特点是每一行、每一列及对角线中的数字之和都相等。
文字没有求和这种操作,如果按照程序员思维,那就是字符串拼接起来相等。
就这样,得出了要寻找的目标:第n行和第n列的文字相同。
璇玑图中共841个字,按顺读、逆读、横读、斜读、蛇行读、交叉读、换行读、换列读、间句读都能成诗,总共包含了7958首诗。
其中的关键之处在于,按照不同顺序读,其文字都能组成有意义的诗句。他自认没有古人作诗的才华,就想到从唐诗中寻找符合条件的诗句。
而且是用现代人的方法——编程来解决。
以“暴力”治之
这位小哥,先是想到了用“八皇后问题”的计算机解法,来找出符合要求的唐诗。
八皇后问题,简单来说是这样的:
8 x 8的国际象棋棋盘上,摆放8个不同的皇后,使其不能互相攻击,即处在同一行、同一列、同一斜线上,求解摆放方法。
这个问题,可以用到一种名为“回溯法”的算法来求解,原理如图:
如果用回溯法来找“幻方”,计算机需要先随机“找出半句诗”,再挨个儿往后面搜索合适的诗句。
例如,计算机先从13万行唐诗中,随机找出诗句“风月清江夜”:
根据对称矩阵的原理,第二句诗的开头,就应该以“月”为首:
(以月开头的诗句,应该还是有不少的,像月上柳梢头)
以此类推,第三句诗的开头,就应该以“清夜”为首:
(以清夜开头的诗句,就少了许多)
而第四句诗的开头,就应该以“江山归”打头:
(江山归开头的诗……可选范围应该更少了)
最后一句诗的开头,就必须与前4句诗的结尾完全一致,“夜深来客”:
难度逐渐变成地狱级……
在这几步操作中,要是有任何一步无法满足条件,就得全部推倒重来。
这样的话,最初的第一步,就显得尤为重要:从什么类型的诗句开始遍历,才能最快地找到答案?
他为此用上了启发式搜索,从已知问题信息入手,对这些空格进行评估,找到限制条件最多、即最容易“下笔”的那个位置,再从这个位置开始找诗。
具体写成代码求解的话,就是利用递归法的结构。
同时,用上剪枝法,缩小剩下位置的查找范围。
也就是说,要用到约束函数,在扩展节点处剪去不满足约束条件的子树;再用限界函数,剪去得不到最优解的子树。
这样一来,就能降低问题复杂度。
然而在运行代码时,作者却发现,这样做效率并不高。
这种方法,虽然可以求解“N”皇后问题,却不太适合求汉字矩阵。
因为,要填进格子里的,可不止8个皇后,每一格可以填的汉字,就有5000+种选择!
采用递归法的话,计算机在填上前面的汉字时,实际上就缩小了剩下汉字可以搜查的范围。
如果没有找到最初那个合适的字,往往搜到一半后,能用的诗句就没了,又得重新再猜,效率不升反降。
越想越烦躁,这位小哥干脆一拍大腿:不如暴力搜索!
当然,也不是普通的暴力搜索。
会有两个搜索条件:
其一,以五言诗为例,第五列的前4个字,和第五行的前4个字,内容是否完全一样?如果不一样,就扔掉。
△ 第五行和第五列的前4个字
其二,这首诗是不是对称矩阵?不是的话,就扔掉。
利用C语言写好后,不用1小时就能跑出所有的“对称诗”。
作者表示,自己并非文学研究的专家,也不是算法专家,因此,这种方法可能并不是最好的办法。
诸君若有更好的求解思路,可以来找他玩耍~
作者介绍
作者Huang Lingdong,在发布文言文编程语言时还在卡耐基梅隆大学上本科。现在已毕业,在母校的Studio for Creative Inquiry做研究助理,为博物馆和学校等组织开发交互媒体项目。
这位小哥热爱编程和传统文化,还开发过写诗IDE,能自动检查平仄等格律规则,内置韵书和康熙字典做参考。
还能通过机器学习分析用户作品,并与《全唐诗》中的诗句做比对,看你写的诗像哪位诗人的风格。
除了诗词古文,他对传统美术也颇有研究,开发过无限生成随机山水画的工具,和多款中文字体。
△就是不知道为什么山水画里有个电线杆
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。