日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
妙哉!那個(gè)用文言文編程的小哥,從28萬(wàn)行唐詩(shī)中找出了對(duì)稱(chēng)矩陣

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

創(chuàng)新互聯(lián)公司專(zhuān)注于萬(wàn)榮企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。萬(wàn)榮網(wǎng)站建設(shè)公司,為萬(wàn)榮等地區(qū)提供建站服務(wù)。全流程按需策劃設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

 你能看出來(lái),這首詩(shī)妙在哪里嗎?

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

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

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

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

就連README文件,也頗具個(gè)性:

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

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

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

文言文編程的“Hello,World”

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

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

玄妙之處

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

原來(lái),這是個(gè)對(duì)稱(chēng)矩陣!

不過(guò),他遍歷了全唐詩(shī)里所有五言詩(shī)共二十八萬(wàn)七千句后,也只能得出兩個(gè)這樣的幻方。

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

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

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

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

最后,他選擇了其中一個(gè)還稍微過(guò)得去的做例子,把空行中的字也加上,也能寫(xiě)成對(duì)稱(chēng)矩陣:

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

洛書(shū)

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

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

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

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

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

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

以“暴力”治之

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

八皇后問(wèn)題,簡(jiǎn)單來(lái)說(shuō)是這樣的:

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

這個(gè)問(wèn)題,可以用到一種名為“回溯法”的算法來(lái)求解,原理如圖:

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

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

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

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

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

(以清夜開(kāi)頭的詩(shī)句,就少了許多)

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

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

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

難度逐漸變成地獄級(jí)……

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

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

他為此用上了啟發(fā)式搜索,從已知問(wèn)題信息入手,對(duì)這些空格進(jìn)行評(píng)估,找到限制條件最多、即最容易“下筆”的那個(gè)位置,再?gòu)倪@個(gè)位置開(kāi)始找詩(shī)。

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

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

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

這樣一來(lái),就能降低問(wèn)題復(fù)雜度。

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

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

因?yàn)?,要填進(jìn)格子里的,可不止8個(gè)皇后,每一格可以填的漢字,就有5000+種選擇!

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

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

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

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

會(huì)有兩個(gè)搜索條件:

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

第五行和第五列的前4個(gè)字

其二,這首詩(shī)是不是對(duì)稱(chēng)矩陣?不是的話,就扔掉。

利用C語(yǔ)言寫(xiě)好后,不用1小時(shí)就能跑出所有的“對(duì)稱(chēng)詩(shī)”。

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

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

作者介紹

[[390164]]

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

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

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

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

就是不知道為什么山水畫(huà)里有個(gè)電線桿

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

Huang Lingdong主頁(yè):
https://lingdong.works/


當(dāng)前名稱(chēng):妙哉!那個(gè)用文言文編程的小哥,從28萬(wàn)行唐詩(shī)中找出了對(duì)稱(chēng)矩陣
網(wǎng)站地址:http://www.5511xx.com/article/ccdghop.html