Ruby: Array contenu dans Array, un ordre [double]
Question
Cette question a déjà une réponse ici:
Supposons que j'ai le code Ruby suivant:
array_1 = ['a', 'b']
array_2 = ['a', 'b', 'c']
some_function(array_1, array_2) # => True
some_function(array_2, array_1) # => False
some_function(['a', 'b'], ['a', 'd']) # => False
some_function(['x', 'y'], array_2) # => False
Je suis à peu près à la recherche de some_function
revenir Vrai lorsque le paramètre 2 contient tous des éléments dans le paramètre 1.
La solution
def f a,b
(a-b).empty?
end
Autres conseils
D'un post précédent,
def f a,b
(a-b).empty?
end
ne fonctionne pas la façon dont vous attendez, par exemple:
a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a2 = [2, 3, 5, 9]
(a1-a2).empty? # returns true
cependant,
a1-a2 # returns [1, 4, 6, 7, 8], not empty
revient ainsi f
faux.
Une solution plus précise, si vous voulez en une ligne serait:
def f a,b
a&b == b
end
a&b
retourne tous les éléments qui sont à la fois a
et b
nous vérifions pour voir si cela est égal à b
Pour des raisons d'ambiguïté:
def f a,b
(a&b == a) || (a&b == b)
end
def f a,b
tmp = a.map(|i| b.include?(i))
tmp.include?(false)
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow