小菜說:「怎樣設計物件才合理?」
大鳥:「這樣吧,我給你講個故事。你就明白了。」
「話說三國時期,曹操帶領百萬大軍攻打東吳,大軍在長江赤壁駐紮,軍船連成一片,眼看就要滅掉東吳,統一天下,曹操大悅,於是大宴眾文武,在酒席間,曹操詩性大發,不覺吟道:『喝酒唱歌,人生真爽。……』。眾文武齊呼:『丞相好詩!』於是一臣子速命印刷工匠刻版印刷,以便流傳天下。」
「樣張出來給曹操一看,曹操感覺不妥,說道:『喝與唱,此話過俗,應改為『對酒當歌』較好!』,於是此臣就命工匠重新來過。工匠眼看連夜刻版之工,徹底白費,心中叫苦不迭。只得照辦。」
「樣張再次出來請曹操過目,曹操細細一品,覺得還是不好,說:『人生真爽太過直接,應改問語才夠意境,因此應改為『對酒當歌,人生幾何?……』當臣轉告工匠之時,工匠暈倒……!」
「小菜你說,這裡面問題出在**?」大鳥問道。
小菜說:「是不是因為三國時期活字印刷還未發明,所以要改字的時候,就必須要整個刻板全部重新刻。」
大鳥:「說得好!如果是有了活字印刷,則只需更改四個字就可,其餘工作都未白做。豈不妙哉。」
「第一,要改,只需更改要改之字,此為可維護;第二,這些字並非用完這次就無用,完全可以在後來的印刷中重複使用,此乃可復用;第三,此詩若要加字,只需另刻字加入即可,這是可擴充套件;第四,字的排列其實可能是豎排可能是橫排,此時只需將活字移動就可做到滿足排列需求,此是靈活性好。」
「而在活字印刷術出現之前,上面的四種特性都無法滿足,要修改,必須重刻,要加字,必須重刻,要重新排列,必須重刻,印完這本書後,此版已無任何可再利用價值。」
小菜:「是的,小時候,我一直奇怪,為何火藥、指南針、造紙術都是從無到有,從未知到發現的偉大發明,而活字印刷僅僅是從刻版印刷到活字印刷的一次技術上的進步,為何不是評印刷術為四大發明之一呢?原來活字印刷的成功是這個原因。」
1079 活字印刷
題目描述 你有一套活字字模 tiles,其中每個字模上都刻有乙個字母 tiles i 返回你可以印出的非空字母序列的數目。注意 本題中,每個活字字模只能使用一次。示例 1 輸入 aab 輸出 8 解釋 可能的序列為 a b aa ab ba aab aba baa 示例 2 輸入 aaabbc 輸出...
問題 H 活字印刷
題目描述 活字印刷術是中國古代四大發明之一,今天我們要試著用計算機實現乙個 活字印刷術 現在輸入乙個字串s,代表一套活字字模,其中每個字模上都刻有乙個字母 s i 輸出你可以印出的非空字母序列的數目。輸入輸入資料由多組測試資料組成。每組測試資料第一行輸入乙個字串s 1 s.length 10 s中所...
leetcode 1079 活字印刷
題目 你有一套活字字模 tiles,其中每個字模上都刻有乙個字母 tiles i 返回你可以印出的非空字母序列的數目。個人解法 50 ms class solution flag newboolean tiles.length char ch tiles.tochararray arrays.sor...