Subtraktion und symmetrische Differenz
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 20 von 56.
Zwei weitere Mengenoperationen vervollständigen das Toolkit.
subtracting gibt die Elemente der ersten Menge zurück, die nicht in der zweiten enthalten sind:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b) // {1, 2}symmetricDifference gibt die Elemente zurück, die in genau einer der beiden Mengen enthalten sind, niemals in beiden:
a.symmetricDifference(b) // {1, 2, 5}Zusammen mit union und intersection decken diese vier jede Mengenalgebra-Frage ab, der Sie im Alltag begegnen werden.
Die Zugehörigkeit zu einer Menge ist auch als Filter nützlich: Prüfe, ob sich ein Wert in einer Menge in O(1) befindet:
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"]Aufgabe
EinfachLies zwei Eingabezeilen ein, wobei jede eine durch Kommas getrennte Liste von Zeichenfolgen ist. Behandle sie jeweils als currentMembers und renewedMembers.
Gib drei Zeilen aus, jeweils alphabetisch sortiert und mit , verbunden (oder leer, wenn keine vorhanden sind):
Lapsed: <...>> current minus renewedNew: <...>> renewed minus currentStayed: <...>> Schnittmenge der beiden
Für die Eingabe alice,bob,cara in Zeile 1 und bob,cara,dan in Zeile 2 lautet die Ausgabe:
Lapsed: alice
New: dan
Stayed: bob,caraProbier es selbst
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: Lapsed (current - renewed), New (renewed - current), Stayed (Schnittmenge) ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimSuchen in StringsAufteilen und ZusammenfügenTeilstrings ersetzenRückblick – Benutzernamen prüfen4Mengen
Mengen erstellenVereinigung und SchnittmengeSubtraktion und symmetrische DifferenzTeilmenge und ObermengeWiederholung – Tag-Filter7Projekt – Gewohnheitstracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteBereichsmethodenBereiche in SwitchRückblick – Kalender-Raster5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerketten von Map, Filter und ReduceRückblick – WortstatistikÜbe selbstständig: Swift-Playground