-3

使用可能な要素を持つ配列と、必要な要素を持つ配列があります。必要な要素がすべて揃っているかどうかを知りたい。

配列には「重複」が含まれる場合があります。次に、必要な数の要素を使用できるようにする必要があります。#contains の最初の試行は? インクルードのためにメソッドが失敗しますか? 要素が少なくとも 1 回利用可能かどうかのみをチェックします

-- 編集: 簡略化されたサンプル コード --

# a first and simple trial
# that fails on duplicate elements
class Array
  def contains?(other)
    other.all? { |element| include?(element) }      
  end      
end

available = [1, 1, 1, 2, 2, 3]
small = [1, 1, 2, 3]  
big = [1, 1, 2, 3, 3] 

available.contains?(small) # is true as intended
available.contains?(big)   # is true but should be false
                           # because "big" contains more "3s" than "available"
4

1 に答える 1

2
def contains?(other)
  other.elements.group_by{|e| e}.all?{|e, a| elements.count(e) >= a.length}
end
于 2013-07-23T18:52:40.110 に答える