Enumerable モジュールを、コレクションの要素をランダムな順序で返す新しい反復子で拡張する必要があります。コレクションに関する唯一の情報 - それはそれぞれに対応します。要素に関するその他の仮定はありません。解決策があります-要素を配列にラップしてから、サンプルメソッドを使用します:
def each_permuted
tmp = []
self.each do |w|
tmp << w
end
tmp.sample(tmp.length).each do |w|
yield w
end
end
ここではコレクションを 2 回 (tmp.sample のランダム順列を数えると 3 回も) 処理するため、気に入らないことがあります。1回の通過で可能ですか?