আপনি অ্যারে শ্রেণি বানর-প্যাচ করতে পারেন:
class Array
def contains_all?(ary)
ary.uniq.all? { |x| count(x) >= ary.count(x) }
end
end
পরীক্ষা
irb(main):131:0> %w[a b c c].contains_all? %w[a b c]
=> true
irb(main):132:0> %w[a b c c].contains_all? %w[a b c c]
=> true
irb(main):133:0> %w[a b c c].contains_all? %w[a b c c c]
=> false
irb(main):134:0> %w[a b c c].contains_all? %w[a]
=> true
irb(main):135:0> %w[a b c c].contains_all? %w[x]
=> false
irb(main):136:0> %w[a b c c].contains_all? %w[]
=> true
irb(main):137:0> %w[a b c d].contains_all? %w[d c h]
=> false
irb(main):138:0> %w[a b c d].contains_all? %w[d b c]
=> true
অবশ্যই পদ্ধতিটি স্ট্যান্ডার্ড একা পদ্ধতি হিসাবে লেখা যেতে পারে, যেমন
def contains_all?(a,b)
b.uniq.all? { |x| a.count(x) >= b.count(x) }
end
এবং আপনি এটি পছন্দ করতে পারেন
contains_all?(%w[a b c c], %w[c c c])
প্রকৃতপক্ষে, প্রোফাইলিংয়ের পরে, নিম্নলিখিত সংস্করণটি আরও দ্রুত এবং কোডটি আরও ছোট।
def contains_all?(a,b)
b.all? { |x| a.count(x) >= b.count(x) }
end