成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

新聞 前端
創(chuàng)造這個奇妙組合的,不是文學(xué)研究大師,而是一位程序員小哥。他用計(jì)算機(jī),找出了所有符合規(guī)律的古詩,還在Github上開源了代碼。

[[390150]]

本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

 你能看出來,這首詩妙在哪里嗎?

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

其實(shí),橫著讀是一首詩,豎著讀還是這首詩!

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

而且,這首詩可不是亂編的,其中的詩句都來自《全唐詩》,讀起來也頗有意境。

創(chuàng)造這個奇妙組合的,不是文學(xué)研究大師,而是一位程序員小哥。

他用計(jì)算機(jī),找出了所有符合規(guī)律的古詩,還在Github上開源了代碼。

就連README文件,也頗具個性:

余所用之程序,當(dāng)以gcc編譯之如是
gcc -O3 mgsq5.c -o mgsq5

等一下。這個風(fēng)格好像很熟悉?

沒錯,這位程序員,正是之前開發(fā)了火遍全網(wǎng)的文言文編程語言的Huang Lingdong。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

 文言文編程的“Hello,World”

他用數(shù)學(xué)中的3階幻方(九宮格)作比,把符合這種規(guī)律的詩命名為“唐詩幻方”。

然而,這首詩真正的玄妙之處,還不止在這里。

玄妙之處

這首詩,初看只是橫豎都能讀,但如果把其中漢字編碼成數(shù)字再看的話,會發(fā)現(xiàn):

原來,這是個對稱矩陣!

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

不過,他遍歷了全唐詩里所有五言詩共二十八萬七千句后,也只能得出兩個這樣的幻方。

除了“風(fēng)月清江夜”以外,還只有一個,不過意境上差了許多,不能令他滿意。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

135600行七言唐詩中,符合這個規(guī)律的七言“幻方”,更是一個都沒有。

他只能退而求其次,只尋找奇數(shù)項(xiàng)對稱的,即每句第1、3、5、7個字對稱,偶數(shù)行用空行代替。

放寬標(biāo)準(zhǔn)后倒是能找出不少,但再想從其中挑選符合音韻格律、意思上還通順的,就不多了。

最后,他選擇了其中一個還稍微過得去的做例子,把空行中的字也加上,也能寫成對稱矩陣:

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

這位小哥,是在研究傳統(tǒng)文化時,從古代的洛書璇璣圖中獲得的靈感。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

洛書

洛書寫成數(shù)字就是三階幻方,特點(diǎn)是每一行、每一列及對角線中的數(shù)字之和都相等。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

文字沒有求和這種操作,如果按照程序員思維,那就是字符串拼接起來相等。

就這樣,得出了要尋找的目標(biāo):第n行和第n列的文字相同。

璇璣圖中共841個字,按順讀、逆讀、橫讀、斜讀、蛇行讀、交叉讀、換行讀、換列讀、間句讀都能成詩,總共包含了7958首詩。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

其中的關(guān)鍵之處在于,按照不同順序讀,其文字都能組成有意義的詩句。他自認(rèn)沒有古人作詩的才華,就想到從唐詩中尋找符合條件的詩句。

而且是用現(xiàn)代人的方法——編程來解決。

以“暴力”治之

這位小哥,先是想到了用“八皇后問題”的計(jì)算機(jī)解法,來找出符合要求的唐詩。

八皇后問題,簡單來說是這樣的:

8×8的國際象棋棋盤上,擺放8個不同的皇后,使其不能互相攻擊,即處在同一行、同一列、同一斜線上,求解擺放方法。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

這個問題,可以用到一種名為“回溯法”的算法來求解,原理如圖:

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

如果用回溯法來找“幻方”,計(jì)算機(jī)需要先隨機(jī)“找出半句詩”,再挨個兒往后面搜索合適的詩句。

例如,計(jì)算機(jī)先從13萬行唐詩中,隨機(jī)找出詩句“風(fēng)月清江夜”:

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

根據(jù)對稱矩陣的原理,第二句詩的開頭,就應(yīng)該以“月”為首:

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

(以月開頭的詩句,應(yīng)該還是有不少的,像月上柳梢頭)

以此類推,第三句詩的開頭,就應(yīng)該以“清夜”為首:

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

(以清夜開頭的詩句,就少了許多)

而第四句詩的開頭,就應(yīng)該以“江山歸”打頭:

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

(江山歸開頭的詩……可選范圍應(yīng)該更少了)

最后一句詩的開頭,就必須與前4句詩的結(jié)尾完全一致,“夜深來客”:

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

難度逐漸變成地獄級……

在這幾步操作中,要是有任何一步無法滿足條件,就得全部推倒重來。

這樣的話,最初的第一步,就顯得尤為重要:從什么類型的詩句開始遍歷,才能最快地找到答案?

他為此用上了啟發(fā)式搜索,從已知問題信息入手,對這些空格進(jìn)行評估,找到限制條件最多、即最容易“下筆”的那個位置,再從這個位置開始找詩。

具體寫成代碼求解的話,就是利用遞歸法的結(jié)構(gòu)。

同時,用上剪枝法,縮小剩下位置的查找范圍。

也就是說,要用到約束函數(shù),在擴(kuò)展節(jié)點(diǎn)處剪去不滿足約束條件的子樹;再用限界函數(shù),剪去得不到最優(yōu)解的子樹。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

這樣一來,就能降低問題復(fù)雜度。

然而在運(yùn)行代碼時,作者卻發(fā)現(xiàn),這樣做效率并不高。

這種方法,雖然可以求解“N”皇后問題,卻不太適合求漢字矩陣。

因?yàn)椋钸M(jìn)格子里的,可不止8個皇后,每一格可以填的漢字,就有5000+種選擇!

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

采用遞歸法的話,計(jì)算機(jī)在填上前面的漢字時,實(shí)際上就縮小了剩下漢字可以搜查的范圍。

如果沒有找到最初那個合適的字,往往搜到一半后,能用的詩句就沒了,又得重新再猜,效率不升反降。

越想越煩躁,這位小哥干脆一拍大腿:不如暴力搜索!

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

當(dāng)然,也不是普通的暴力搜索。

會有兩個搜索條件:

其一,以五言詩為例,第五列的前4個字,和第五行的前4個字,內(nèi)容是否完全一樣?如果不一樣,就扔掉。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

 第五行和第五列的前4個字

其二,這首詩是不是對稱矩陣?不是的話,就扔掉。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

利用C語言寫好后,不用1小時就能跑出所有的“對稱詩”。

作者表示,自己并非文學(xué)研究的專家,也不是算法專家,因此,這種方法可能并不是最好的辦法。

諸君若有更好的求解思路,可以來找他玩耍~

作者介紹

[[390164]]

作者Huang Lingdong,在發(fā)布文言文編程語言時還在卡耐基梅隆大學(xué)上本科?,F(xiàn)在已畢業(yè),在母校的Studio for Creative Inquiry做研究助理,為博物館和學(xué)校等組織開發(fā)交互媒體項(xiàng)目。

這位小哥熱愛編程和傳統(tǒng)文化,還開發(fā)過寫詩IDE,能自動檢查平仄等格律規(guī)則,內(nèi)置韻書和康熙字典做參考。

還能通過機(jī)器學(xué)習(xí)分析用戶作品,并與《全唐詩》中的詩句做比對,看你寫的詩像哪位詩人的風(fēng)格。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

除了詩詞古文,他對傳統(tǒng)美術(shù)也頗有研究,開發(fā)過無限生成隨機(jī)山水畫的工具,和多款中文字體。

妙哉!那個用文言文編程的小哥,從28萬行唐詩中找出了對稱矩陣

就是不知道為什么山水畫里有個電線桿

項(xiàng)目地址:
https://github.com/LingDong-/magic-square-poems

Huang Lingdong主頁:
https://lingdong.works/

 

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2021-08-26 15:05:01

微軟翻譯文言文微軟亞洲研究院

2024-11-06 09:11:33

編程語言程序員

2020-03-12 13:50:59

編程語言PythonJava

2019-12-18 15:28:05

編程語言PythonJava

2020-02-02 17:21:18

語言編程文言文

2021-03-02 13:56:24

Linux 5.12代碼驅(qū)動

2021-06-10 12:50:02

編程語言PythonJava

2024-03-13 15:48:43

2019-01-03 09:29:15

Linux 系統(tǒng) 數(shù)據(jù)

2023-06-28 14:18:06

2020-08-17 17:10:54

機(jī)器學(xué)習(xí)聚類開發(fā)

2013-10-09 13:25:40

Google

2013-10-10 12:28:56

Google開源代碼

2009-07-21 08:44:14

微軟Linux內(nèi)核開源操作系統(tǒng)

2020-02-05 15:23:00

語言編程文言文

2011-05-03 09:10:12

項(xiàng)目管理程序員

2015-09-01 16:26:18

Linux內(nèi)核

2020-05-27 14:10:50

代碼開發(fā)工具

2019-04-19 13:01:12

Java代碼庫Go代碼移植
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产小视频在线 | 亚洲一区中文字幕 | 日本精品视频在线观看 | 国产日韩欧美 | 久久精品黄色 | 日韩综合网 | 96av麻豆蜜桃一区二区 | 中文字幕精品一区二区三区精品 | 亚洲精品高清视频在线观看 | 久久精品国产99国产精品 | 伊人伊人 | 色欧美片视频在线观看 | 精品国产乱码久久久久久蜜退臀 | 亚洲乱码一区二区三区在线观看 | av日韩精品 | 五月综合激情婷婷 | 91在线视频在线观看 | 在线欧美一区 | 亚洲精品视频免费观看 | 日本一本视频 | 一区二区三区国产精品 | 国产精品亚洲第一区在线暖暖韩国 | 婷婷狠狠 | 狠狠色狠狠色综合系列 | 国产精品久久久久久高潮 | 一区二区三区影院 | 久免费视频| 男女精品久久 | 亚洲欧美一区二区三区在线 | 中文区中文字幕免费看 | 在线中文字幕亚洲 | 天天躁日日躁狠狠很躁 | 99成人精品 | 一级a性色生活片久久毛片波多野 | 国产精品久久国产精品 | 中文字幕在线播放第一页 | 欧美自拍网站 | 天天操精品视频 | 午夜丰满寂寞少妇精品 | 欧美亚洲高清 | 日韩精品视频在线观看一区二区三区 |