Ruby: Array in Array enthalten sind, jede Reihenfolge [Duplikat]
Frage
Diese Frage bereits eine Antwort hier:
Angenommen ich folgende Ruby-Code haben:
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
Ich bin so ziemlich für some_function
suchen Wahr zurück, wenn Parameter 2 enthält alle der Elemente in Parameter 1.
Lösung
def f a,b
(a-b).empty?
end
Andere Tipps
Von einem frühen Post,
def f a,b
(a-b).empty?
end
wird die Art und Weise arbeiten, die Sie erwarten, zum Beispiel:
a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a2 = [2, 3, 5, 9]
(a1-a2).empty? # returns true
aber
a1-a2 # returns [1, 4, 6, 7, 8], not empty
so f
false zurück.
Eine genauere Lösung, wenn Sie wollen ein Einzeiler wäre:
def f a,b
a&b == b
end
a&b
werden alle Elemente zurück, die sowohl in der a
und b
sind dann überprüfen wir zu sehen, ob das gleich zu b
Für Mehrdeutigkeit zuliebe:
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow