有沒有人有任何想法,鏈接或算法來解決與PHP和MySQL的anagram。如果任何人有一本好的英文字典,也會被讚賞。你會如何處理一個PHP + MySQL的字謎算法?
我期待實現類似於此:
http://www.ssynth.co.uk/~gay/anagram.html
的傢伙解釋他是如何做到這裏http://www.ssynth.co.uk/~gay/anagabout.html ...從他在說什麼像PHP語言可能不適合..這會是一個問題嗎?
謝謝..
有沒有人有任何想法,鏈接或算法來解決與PHP和MySQL的anagram。如果任何人有一本好的英文字典,也會被讚賞。你會如何處理一個PHP + MySQL的字謎算法?
我期待實現類似於此:
http://www.ssynth.co.uk/~gay/anagram.html
的傢伙解釋他是如何做到這裏http://www.ssynth.co.uk/~gay/anagabout.html ...從他在說什麼像PHP語言可能不適合..這會是一個問題嗎?
謝謝..
從你的鏈接...
店都在一個樹形結構的話
數據庫是存儲在像這樣的分層數據非常糟糕,所以我不會推薦MySQL。你或許可以用索引和LIKE子句做一些「聰明」的事情,但我希望這會變得非常混亂。
PHP有你需要爲此編碼的一切,但可能有更好的選擇。 Perl以其對文本操作的能力而聞名。我不確定Python或Ruby等腳本語言。
如果我有一個帶有「單詞」(如cat),'長度'(例如3)和A-Z(例如c = 1 a = 1 t = 1)的表格,該怎麼辦。這樣的諺語'atc'我可以做一個查詢,如'SELECT word FROM dictionary WHERE c <= 1 AND a <= 1 AND t <= 1 AND length <= 3',它會返回cat ... – Pablo 2010-08-09 10:27:43
什麼是錯的將分層數據存儲在數據庫中?它迫使您規劃如何以可搜索的方式來表示數據。 – symcbean 2010-08-09 12:23:31
@Pablo,我喜歡它富有創意的解決方案,但您將浪費大量存儲空間。 – 2010-08-09 14:28:39
從他在說什麼像PHP語言可能不適合
你如何從細節他出版?
如果任何人有一個良好的英語字典...
有一個在pspell extension雖然給出呈現它可能是更有效的推動大多數邏輯算法的性質(和字典)到數據庫中 - IIRC pspell使用自定義格式,儘管
Pablo提出的算法看起來有什麼錯誤?我會建議相同;)
如果我曾與列的 「字」(例如貓),「長度」(表例如3)和 AZ(如c = 1 = 1 T = 1)。這樣的 字謎 'ATC' 我可以做一個查詢像 'SELECT字從詞典其中C < = 1和A < = 1和T < = 1和長度 < = 3',它會返回貓
請將upvoting(如果有的話)重定向到他的評論。
也有一個類似的問題:Algorithm to generate anagrams
我將有一個表{信} {字} {計數}和每個字,其存儲以及它的每個組成字母,以及該字母出現在單詞中的次數。然後搜索anagrams首先搜索一組字母,並找出每個字母關聯的單詞集合之間的交集。例如
輸入:大鼠 表:
T tar 1
A tar 1
R tar 1
C cat 1
A cat 1
T cat 1
C car 1
A car 1
R car 1
結果,對每個字母
R car tar
A cat car tar
T cat tar
然後你加入每個查詢有交集!
您可以使用Trie datastructure循環每個字符序列組合(如果沒有子節點,顯然會停止當前節點)。
這將以相當有效的方式生成所有可能解決方案的完整列表。有限的起始字符集,我認爲它會工作。
在每個節點上,您可以選擇匹配單詞的數量,當它足夠小時,將其加載到數組中進行比較,因此不需要運行一百萬個選擇。
你可能想看看Xavier的Anagram Solver。它是用PHP和MYSQL編寫的。 有一個演示:http://anagram.savjee.be/
源代碼位於:https://github.com/Savjee/Xavier-s-Anagram-Solver 這很容易理解。
我不能避免這種想法聽起來不像一個問題,至少不是一個編程問題。關於PHP,如果他用C語言在mminutes中解決了一些問題,那麼PHP可能需要幾個小時。 – 2010-08-09 13:31:00