蛋疼研究之单词等式

    先给大家看两个“单词等式”:

ACT + DEAL = DONE
COIN + TRY = DIAL

    除了意义上说得通以外,从另外一个角度来看,这两个等式也是成立的。大家能猜到是什么吗?


 
    答案是:这两个等式真的就是成立的——如果把单词看作 36 进制数的话。把 ACT 转换成 10 进制就是 13421 ,把 DEAL 转换成 10 进制就是 625053 ,而 DONE 的 10 进制正好就是 638474 。类似地, COIN 加 TRY 也真的等于 DIAL ,对应的 10 进制算式为 591647 + 38590 = 630237 。

    其实,蛋疼的数学家们已经干过类似的事情了。数学家们对质数的热爱如此疯狂,以至于他们甚至搞出了一份质数单词表。最近我偶然看到 N 年前自己的一篇罗列质数单词的日志,立即想到了这个更蛋疼的主意——单词等式。于是写程序小小地搜索了一下,很快便出现了上面两个式子。

    我把 ACT + DEAL = DONE 加上引号拿到 Google 里去搜,没有结果。哈哈,似乎我是第一个蛋疼到想要研究这种 36 进制单词等式的人。于是我用 Mathematica 写了一个程序,在所有字母个数为 3 到 5 的常用单词中寻找等式:

minWordNetID[word_] := 
  If[Head[WordData[word, "WordNetID"]] === WordData, [Infinity], 
   Min[FromDigits[#, 10] & /@ 
     WordData[word, "WordNetID"][[All, 2]]]];
v = DictionaryLookup[RegularExpression["[a-z]{3,5}"]];
v = Select[v, minWordNetID[#] < 10000000 &]; n = Sort[FromDigits[#, 36] & /@ v]; partiton[word_] := {BaseForm[#, 36],       BaseForm[FromDigits[word, 36] - #, 36]} & /@     Intersection[FromDigits[word, 36] - n, n]; result = {#, partiton[#]} & /@ v; result = Select[result, Length[#[[2]]] > 0 &];
TableForm[result]

    人工筛选有意义的等式并不是一件容易的事。我找到了下面三个很漂亮的单词等式:

MAP + LOOP = MAZE
DYE + BLADE = BLOBS
MAN + ROAR = SALE

    另外还有一些不那么好的单词等式,我也写出来吧:

BUG + BUG = NOW
SHOWN + BLUR = STARE
ACT + HEAR = HONK

    我也尝试过搜索字母更多的单词等式,以及包含乘法的单词等式,但结果数量极少,很难出现意义正好也相符的式子。我有没有错过什么更为绝妙的单词等式呢?欢迎蛋疼的网友们也来找一找。

22 条评论

发表评论