Różnica i różnica symetryczna
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 20 z 56.
Dwie kolejne operacje na zbiorach dopełniają zestaw narzędzi.
subtracting zwraca elementy pierwszego zbioru, których nie ma w drugim:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b) // {1, 2}symmetricDifference zwraca elementy, które należą do dokładnie jednego z dwóch zbiorów, nigdy do obu:
a.symmetricDifference(b) // {1, 2, 5}Razem z union i intersection te cztery operacje obejmują wszystkie zagadnienia z algebry zbiorów, z którymi spotkasz się na co dzień.
Przynależność do zbioru jest też przydatna jako filtr: sprawdź, czy wartość należy do zbioru w czasie O(1):
let stopwords: Set = ["the", "a", "an"]
let words = ["the", "cat", "sat", "on", "a", "mat"]
let real = words.filter { !stopwords.contains($0) }
// ["cat", "sat", "on", "mat"]Wyzwanie
ŁatwyWczytaj dwa wiersze danych wejściowych, każdy zawierający listę ciągów znaków oddzielonych przecinkami. Potraktuj je odpowiednio jako currentMembers i renewedMembers.
Wypisz trzy wiersze, każdy posortowany alfabetycznie i połączony za pomocą , (lub pusty, jeśli nie ma żadnych elementów):
Lapsed: <...>> obecne minus odnowioneNew: <...>> odnowione minus obecneStayed: <...>> część wspólna obu zbiorów
Dla danych wejściowych alice,bob,cara w wierszu 1 i bob,cara,dan w wierszu 2 wynik to:
Lapsed: alice
New: dan
Stayed: bob,caraSpróbuj swoich sił
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: wypisz Lapsed (current - renewed), New (renewed - current), Stayed (część wspólna)
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Dogłębnie o ciągach znaków
Liczba i indeksyWielkość liter i usuwanie białych znakówWyszukiwanie w ciągach znakówDzielenie i łączenieZastępowanie podciągówPodsumowanie — sprawdzanie nazwy użytkownika4Zbiory
Tworzenie zbiorówSuma i część wspólnaRóżnica i różnica symetrycznaPodzbiór i nadzbiórPowtórka — filtr tagów7Projekt – Śledzenie nawyków
Przegląd projektuOznacz jako wykonane10Projekt — silnik quizów
Przegląd projektuZadawanie pytań2Zakresy i kroki
Zakresy domknięte i półotwarteKrokMetody zakresówZakresy w instrukcji switchPowtórka — siatka kalendarza5Funkcje wyższego rzędu, część 1
MapFilterReduceŁączenie map, filter i reducePodsumowanie – statystyki słówPoćwicz samodzielnie: Edytor online Swift