Jaki jest najlepszy, najbardziej elegancki/skuteczny sposób na sprawdzenie, czy tablica zawiera dowolny element z drugiej macierzy?Tablica zawiera jakąkolwiek wartość z innej tablicy?
Dwa przykłady poniżej, próbując odpowiedzieć na pytanie, czy 'żywność' zawiera żadnego elementu z 'sery':
cheeses = %w(chedder stilton brie mozzarella feta haloumi)
foods = %w(pizza feta foods bread biscuits yoghurt bacon)
puts cheeses.collect{|c| foods.include?(c)}.include?(true)
puts (cheeses - foods).size < cheeses.size
Ruby wykonuje przecięcie, budując skrót, więc zdecydowanie nie jest to to samo co 'any? {... include?}', Które będzie cyklicznie przechodzić przez każdą potencjalną parę elementów. Przecięcie '& 'jest zatem czasem liniowym, podczas gdy' any? 'Będzie kwadratowe. Byłoby równoważne, gdyby "sery" były "Set" zamiast "Array". –
Podczas sprawdzania, czy tablica zawiera element z innej tablicy, czy nie miałoby większego sensu (serów i potraw). ponieważ zwraca prawdziwą wartość, jeśli tablice "faktycznie zawierają którekolwiek z tych samych elementów? –
@RyanFrancis, docs: 'any?': * Metoda zwraca wartość true, jeśli blok nigdy zwraca wartość inną niż false lub zero. * 'Empty?': * Zwraca wartość true, jeśli self nie zawiera żadnych elementów. * – Nakilon