我解決了一個問題,要求您編寫一個方法來確定提供的數組中的單詞是anagrams,並將anagrams分組到輸出內的子數組中。使用字符串的Ruby Anagram#sum
我已經解決了它使用什麼似乎是典型的方式,你會通過排序單詞,並根據他們的排序字符分組成一個哈希。
當我最初開始尋找一種方法來做到這一點,我注意到String#sum
存在,它將每個字符的序號加在一起。
我想嘗試一些方法來確定基於使用sum
的anagram。例如,「汽車」和「傷痕」是字謎及其sum
是425
給出%w[cars scar for four creams scream racs]
預期輸出(我已經得到使用散列溶液)的輸入是:[[cars, scar, racs],[for],[four],[creams,scream]]
。
好像做這樣的事情:
input.each_with_object(Hash.new []) do |word, hash|
hash[word.sum] += [word]
end
是要走的路,這給你一個散列結果,其中的關鍵「425」中的數值[「汽車」,「RACS」,「疤痕「]。我想我錯過的是將其轉換爲輸出的預期格式。
這似乎是普遍接受的解決方案,並有充分的理由。乍一看,當我開始解決這個問題時,我認爲這個總和似乎也許是另一種攻擊方式。我原來的解決方案不如你的雄辯,但它使用相同的word.chars.sort想法。只是想保持新鮮:) – 2012-03-01 14:56:32
此外,我也提交了我的解決方案,並通過了他們在autograder中使用的規格,就像我原來的解決方案一樣。我重新提交了原始解決方案,以便正確的實施文件。試驗總是很有趣的。 – 2012-03-01 14:58:21