2012-03-08 15 views
0

のようなので、私は、いくつかの文章を保持する配列、headlinesを、持っている:私はあなたがそれを提供し、文字列の最後の単語の言葉を押韻プリントアウトする方法#to_phrase.rhymesを提供ruby_rhymes宝石を使用していますこの配列をどのように並べ替えることができますか?

headlines = ["I see a tree", "Facebook is slow", "plants need water to grow", "There's an orange", "I think we'll agree"] 
first = headlines[0] 
second = headlines[1] 
third = headlines[2] 

と。

> first.to_phrase.rhymes.flatten.join(", ").include?(second.to_phrase.rhymes.flatten.join(", ")) 
=> false 
> second.to_phrase.rhymes.flatten.join(", ").include?(third.to_phrase.rhymes.flatten.join(", ")) 
=> true 

私は押韻のペアが互いに以降になるように配列にそれらをソートしたいので、テキストファイルにこれらを保存したい:今すぐ配列文字列は韻かどうかを確認するために、私のような何かをします。私は、ソートするために知っているので、最後の3つの文字が同じであれば、文字列が続くということです。

headlines.sort! {|a,b| a[-3,3] <=> b[-3,3] } 

しかし、私は私が欲しい欲しい行う方法を知りません。

答えて

0

だから私はそれを考え出した:

headlines.sort_by! { |h| h.to_phrase.rhyme_key } 

これが100%に動作しませんが、それはのせいです宝石が依存している辞書。

0

あなたの提案の出力を調べることによって、あなたは正しい軌道に乗っていることがわかります。

p headlines.sort {|a,b| a[-3,3] <=> b[-3,3] } 
# => ["Facebook is slow", "There's an orange", "I see a tree", "I think we'll agree", "plants need water to grow"] 

「...遅い」と「...成長」によって引き起こされる、唯一順不同文章です文字「r」と「o」。簡単なハックはそのような比較の順序を逆にするようになります:

p headlines.sort {|a,b| a[-3,3].reverse <=> b[-3,3].reverse } 
# => ["I see a tree", "I think we'll agree", "There's an orange", "Facebook is slow", "plants need water to grow"] 
+0

いいえこれは機能しません。ヘッドライン配列が何百もの文字列を取得する場合、あなたの(私の提案する)アプローチはうまくいかないでしょう。また、韻を踏むが、「スルー」や「あなた」のように綴りが違う言葉では機能しません。 – Simpleton

関連する問題