Как часть очень простой программы, которую я пишу в Ruby, я пытаюсь найти общее количество общих элементов между двумя массивами равной длины, но Мне нужно включить повторы.
Мой текущий примерный код для этой ситуации выглядит следующим образом:
array_a = ["B","A","A","A","B"]
array_b = ["A","B","A","B","B"]
counter = 0
array_a.each_index do |i|
array_a.sort[i] == array_b.sort[i]
counter += 1
end
end
puts counter
Я хочу, чтобы возвращаемое значение этого сравнения в этом экземпляре равнялось 4, а не 2, так как два массива имеют два повторяющихся символа ( "А" два раза и "В" два раза). Это похоже на работу, но мне интересно, есть ли более эффективные решения для этой проблемы. В частности, есть ли какие-либо методы, которые вы хотели бы изучить. Я говорил с кем-то, кто предложил другой метод, inject
, но я действительно не понимаю, как это применимо и хотелось бы понять. Я довольно много читал об использовании для него, и мне все еще не ясно, насколько это уместно. Спасибо.
Посмотрев на мой код, я понял, что он не работает для ситуации, о которой я описываю.