日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

來源:快科技

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

其實,橫著讀是一首詩,豎著讀還是這首詩!

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

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

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

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

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

等一下。這個風格好像很熟悉?

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

△ 文言文編程的 "Hello,World"

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

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

玄妙之處

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

原來,這是個對稱矩陣!

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

除了 " 風月清江夜 " 以外,還只有一個,不過意境上差了許多,不能令他滿意。

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

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

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

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

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

△洛書

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

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

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

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

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

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

以 " 暴力 " 治之

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

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

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

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

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

例如,計算機先從 13 萬行唐詩中,隨機找出詩句 " 風月清江夜 ":

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

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

以此類推,第三句詩的開頭,就應該以 " 清夜 " 為首:

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

而第四句詩的開頭,就應該以 " 江山歸 " 打頭:

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

最后一句詩的開頭,就必須與前 4 句詩的結尾完全一致," 夜深來客 ":

難度逐漸變成地獄級 ……

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

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

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

具體寫成代碼求解的話,就是利用遞歸法的結構。

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

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

這樣一來,就能降低問題復雜度。

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

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

因為,要填進格子里的,可不止 8 個皇后,每一格可以填的漢字,就有 5000+ 種選擇!

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

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

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

當然,也不是普通的暴力搜索。

會有兩個搜索條件:

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

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

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

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

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

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

作者介紹

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

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

還能通過機器學習分析用戶作品,并與《全唐詩》中的詩句做比對,看你寫的詩像哪位詩人的風格。

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

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

分享到:
標簽:詩句 小哥 漢字 對稱 求解 開頭 矩陣 個字
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定