[心得] 鉍鎝氫--可拆成元素符號的英文單字

看板Mathematica作者 (Hysterisis)時間8年前 (2017/01/05 00:56), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/2 (看更多)
最近我聽到這種最新的屁孩潮流:罵人不帶髒字,但帶有很多化學元素 符號。例如將標題逐一代換成符號就是 BiTcH。 當然就要來玩 Mathematica 裡現成的三個單字組,分別是 DictionaryLookup[], WordList[], 和 WordList["KnownWords"] notebook 如下 https://drive.google.com/open?id=0BxdQVr5QMJfUVWFhaWFxVnotME0 因為代碼有點長所以不適合寫在這裡 -- 方法的最後版本比直覺法有效率多了,檢查完九萬餘字只需要 120 秒。 但我沒有一開始就想到這個做法,分享一下心路歷程 -- 因為元素符號有一或兩個字母,強烈在引誘我利用費氏數列解題 'bitch':> b-i-t-c-h, b-it-c-h, b-it-ch, b-i-tc-h, b-i-t-ch, bi-t-c-h, bi-tc-h, bi-t-ch 拆成這恰好八種,分別檢查是否子字串屬於元素符號即可 這八種的邏輯等於「下五階樓梯,一次可走一或兩階」的走法 Fibonacci[5]=8 --元素名可以從 MMA 的化學資料集取得 ElementData[#, "Abbreviation"] & /@ ElementData[] 再自己加上最新最潮的四個新元素 "Nh", "Mc", "Ts", "Og"。 後來我發現這樣簡潔的暴力法對於 WordList["KnownWords"] 永遠也跑不出來 原因是這個字集裡含有 acrylonitrile-butadiene-styrene (ABS塑膠的全名) 這種長字...qq 真是暴力的單字 (很顯然它以 -ene 結尾,不能拆) 而 Fibonacci[29] = 514229 等於要查遍有半百萬個元素的清單,會爆記憶體。 - - 經我細思,發現其實可以把長字砍一半,一半又砍一半這樣 D&D 風格的作法, 快多了。原理是假使一個字,例如 hirsutism 可以拆分為元素字母,則 (hirsu 和 tism) 或 (hirs 和 utism) 兩者中至少有一個頭尾兩半都能拆分。 再考慮到這個例子中切點前後的 U 是個單字母元素名 HBCNOFPKSYIUVW 則 "hirsutism"的所有可行拆法 = "hirs"*"utism" - "hirs"*"u"*"tism" + "hirsu"*"tism" *字是乘 拆到一定長度以下,例如五或六字母就可以使用brute force了。結束 最後是一些有趣結果: DictionaryLookup[] 中有 16.99% 可以拆分,其中最多種可行拆法的字是 {"consciousnesses", "inconspicuousness", "innocuousness"}...皆 24 種 WordList["KnownWords"] 中有 15.93% 可拆,薑薑薑薑,最多拆法的字是 pneumonoconiosis ......塵肺病,為什麼我沒有十分感到意外呢XD。拆法有 48 種 含有最多單字母元素但不可拆分的字是 "BUSHWHaCKINg",顯然只差最後一個 g 字 擁有最多元素名字但不可拆分的字是 "tetrabromophenolsulfonephthalein" (酸鹼指示劑溴酚藍) 子字串含有19個元素名 "hyperbetalipoproteinemia"(很少用的醫學名詞) 含18個 在可以拆分的字裡面,元素 "Bk", "Zn", "Zr", "Mg", "Sg", "Fm", "Cf" 一次都沒有出現,這邊排除掉很牽強的字如 hooF-Mark 可以完美、不重複拆分的字裡面含有最多種元素符號的是 CoUNTeReSPIONaGe (counterespionage 反商業間諜) 11個 ReCLaSSiFICaTiON (reclassification 重分類) 11 個 歡迎幫忙想還有什麼有梗的XDD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.172.88.138 ※ 文章網址: https://www.ptt.cc/bbs/Mathematica/M.1483549001.A.C66.html

01/05 01:41, , 1F
cool XD
01/05 01:41, 1F

01/05 09:56, , 2F
我發現無恥的將氘和氚(D, T)列入元素記號之後,可以
01/05 09:56, 2F

01/05 09:56, , 3F
拆的單字數大量增加到24%,我覺得這主要是因為-ity, -
01/05 09:56, 3F

01/05 09:56, , 4F
tion, -ting這一類超常見字尾突然變得可以拆分了。
01/05 09:56, 4F

01/05 16:30, , 5F
拜服,希望越來越多人用mATHEMATICA
01/05 16:30, 5F
文章代碼(AID): #1ORIb9nc (Mathematica)
文章代碼(AID): #1ORIb9nc (Mathematica)