2010-08-09 19 views
0

有沒有人有任何想法,鏈接或算法來解決與PHP和MySQL的anagram。如果任何人有一本好的英文字典,也會被讚賞。你會如何處理一個PHP + MySQL的字謎算法?

我期待實現類似於此:

http://www.ssynth.co.uk/~gay/anagram.html

的傢伙解釋他是如何做到這裏http://www.ssynth.co.uk/~gay/anagabout.html ...從他在說什麼像PHP語言可能不適合..這會是一個問題嗎?

謝謝..

+0

我不能避免這種想法聽起來不像一個問題,至少不是一個編程問題。關於PHP,如果他用C語言在mminutes中解決了一些問題,那麼PHP可能需要幾個小時。 – 2010-08-09 13:31:00

回答

-2

從你的鏈接...

店都在一個樹形結構的話

數據庫是存儲在像這樣的分層數據非常糟糕,所以我不會推薦MySQL。你或許可以用索引和LIKE子句做一些「聰明」的事情,但我希望這會變得非常混亂。

PHP有你需要爲此編碼的一切,但可能有更好的選擇。 Perl以其對文本操作的能力而聞名。我不確定Python或Ruby等腳本語言。

+1

如果我有一個帶有「單詞」(如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

+0

什麼是錯的將分層數據存儲在數據庫中?它迫使您規劃如何以可搜索的方式來表示數據。 – symcbean 2010-08-09 12:23:31

+0

@Pablo,我喜歡它富有創意的解決方案,但您將浪費大量存儲空間。 – 2010-08-09 14:28:39

1

從他在說什麼像PHP語言可能不適合

你如何從細節他出版?

如果任何人有一個良好的英語字典...

有一個在pspell extension雖然給出呈現它可能是更有效的推動大多數邏輯算法的性質(和字典)到數據庫中 - IIRC pspell使用自定義格式,儘管

0

Pablo提出的算法看起來有什麼錯誤?我會建議相同;)

如果我曾與列的 「字」(例如貓),「長度」(表例如3)和 AZ(如c = 1 = 1 T = 1)。這樣的 字謎 'ATC' 我可以做一個查詢像 'SELECT字從詞典其中C < = 1和A < = 1和T < = 1和長度 < = 3',它會返回貓

請將upvoting(如果有的話)重定向到他的評論。

也有一個類似的問題:Algorithm to generate anagrams

你也需要檢查谷歌: http://www.google.ru/search?q=anagram+solving+algorithms&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox

0

我將有一個表{信} {字} {計數}和每個字,其存儲以及它的每個組成字母,以及該字母出現在單詞中的次數。然後搜索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 

然後你加入每個查詢有交集!

0

您可以使用Trie datastructure循環每個字符序列組合(如果沒有子節點,顯然會停止當前節點)。

這將以相當有效的方式生成所有可能解決方案的完整列表。有限的起始字符集,我認爲它會工作。

在每個節點上,您可以選擇匹配單詞的數量,當它足夠小時,將其加載到數組中進行比較,因此不需要運行一百萬個選擇。