(私は既にこの問題の解決策を書いていますが、Rubyの "Spirit"Ruby:述語に基づいてレコードを検索してください - より良いソリューションを提案してください
問題:私は針のセット、針配列の要素の(順序付けられた)セット、針と干し草の要素を取り、真または偽の述語を持っています。タスクは、述語が真であるhaystack要素があるところで最初の針を見つけてから、haystack要素を返します。私たちは針には興味がありません。ニードルと干し草は配列として表されます。例えば
、
needles = [17,3,7,121]
haystack = [40,30,70]
と述語結果は、針17のために、干し草の山には要素が述語を満たしていないので、30であってもよいが、針3べき
def p(needle, hay)
hay % needle == 0
end
ある場合第2要素(30)は行う。私は少し不自然見つける何
found = nil
needles.find do |n|
found = haystack.find { |he| p(n,he) }
break if found
end
が、私は基本的に外find
の結果を捨て、最終的に結果を保持する変数found
、持ち歩く必要があるということです。
は、ここに私の実装です。私は直接found
に結果を代入し、より簡潔な表現、すなわち:
found = ......
任意のアイデアを探していましたか?
今後の参考として、このような質問は、http://codereview.stackexchange.com/に掲載されている方がよいでしょう。すでに問題の解決策があるが、コードの質に関する意見のみを求めているからです。 –