Qualsiasi valore in comune? è possibile utilizzare l'operatore di intersezione: &
[ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ]
Se siete alla ricerca di un incrocio pieno però (con i duplicati) il problema è più complesso si trova già un overflow dello stack qui: How to return a Ruby array intersection with duplicate elements? (problem with bigrams in Dice Coefficient)
o un rapido snippet che definisce "real_intersection" e convalida il seguente test
class ArrayIntersectionTests < Test::Unit::TestCase
def test_real_array_intersection
assert_equal [2], [2, 2, 2, 3, 7, 13, 49] & [2, 2, 2, 5, 11, 107]
assert_equal [2, 2, 2], [2, 2, 2, 3, 7, 13, 49].real_intersection([2, 2, 2, 5, 11, 107])
assert_equal ['a', 'c'], ['a', 'b', 'a', 'c'] & ['a', 'c', 'a', 'd']
assert_equal ['a', 'a', 'c'], ['a', 'b', 'a', 'c'].real_intersection(['a', 'c', 'a', 'd'])
end
end
Ti importa quali sono gli elementi che ha in comune? – Levi
No. Tutto quello che voglio sapere è se i due hanno elementi in comune. – Colen