用於生成和操作字謎詞的函式庫。
賽伊諾西圖 | UT TENSIO、SIC UIS
羅伯特‧胡克, 《De Potentia Restitutiva》
(需要 '[d4hines/anagramaton.core:as]);該庫需要一個字典作為輸入,採用數組字串的形式。這是一個例子。接下來我們要對字典做一些預處理(def word-map (a/dict->word-map Words));;現在你可以開始形成字謎! =>#{[“親愛的”] [“敢”] [“讀”] [“A”“紅色”] [「廣告」「回覆」]}
心理學研究人員正在調查受試者解決字謎的能力。因此,他們需要一種生成和驗證字謎解決方案的方法。
為本項目的目的,讓以下定義成立:
單字:標準 Unix 單字集之一。
Anagram:重新排列另一個字串的字母而形成的單字或單字序列,例如由carpenter形成的rant Creep 。
Anagram Puzzle:一個字串,它不是一個單詞,而是一個 anagram。
字謎解法:由給定字謎的相同字母組成的單字。
無法解析的 Anagram:一個既不是單字也不是 anagram 的字串(有點用詞不當,是嗎?)。
解決方案必須:
成為 Clojure 庫...
這可以產生字謎謎題..
難度各異...
並驗證給定的單字是否是給定字謎的解決方案...
同時速度夠快,可以在 REPL 上互動使用。
Wordsmith 的服務擁有數量驚人的旋鈕,您可以轉動這些旋鈕來創建出色的字謎詞。這東西太棒了。所以很想為他們的 api 製作客戶端庫並完成...
https://en.wikipedia.org/wiki/Scrabble_letter_distributions 誰會想到
http://norvig.com/mayzner.html - 非常好的解釋,更新了雙字母表https://stackoverflow.com/a/12477976 - 查找單字字謎的基本演算法http://pi.math.cornell. edu /~mec/2003-2004/cryptography/subs/digraphs.html - 我正在使用的二元表https://web.stanford.edu/class/cs9/sample_probs/Anagrams.pdf - 很好的演算法解釋http :// www.ssynth.co.uk/~gay/anagabout.html - 實施,但細節粗製濫造
https://stackoverflow.com/a/881367 - 靈感
感謝@seancorfield、@dpsutton 和@porkostomus 在部分字謎演算法方面的幫助!
我們要處理字謎短語(多字字謎)嗎?
到目前為止,我讀過的每個定義都將字謎定義為「單字、短語或名稱」。雖然我對多詞字謎會增加的複雜性(數量級更多)並不感到興奮,但我認為必須處理它們才能真正解決問題。
我們要做什麼來優化速度?
盡可能少。過早的優化等等。
我們如何衡量「難度」?
請參閱下一節。
你到底是如何衡量字謎的難度?事實證明,這是一個引起大量學術研究和爭論的主題。
這是我迄今為止的研究的快速而粗略的總結:
梅茲納和特雷塞爾特似乎是這個問題的歷史權威,並被許多此類研究引用。
他們有大量的研究來檢驗不同研究的效果,例如這項研究。
其中許多都超出了我的想像,但二元詞頻率似乎是其中之一