Soustraction et différence symétrique
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 20 sur 56.
Deux autres opérations sur les ensembles complètent la boîte à outils.
subtracting retourne les éléments du premier ensemble qui ne sont pas dans le second :
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b) // {1, 2}symmetricDifference retourne les éléments qui se trouvent dans exactement l'un des deux ensembles, jamais les deux :
a.symmetricDifference(b) // {1, 2, 5}Avec union et intersection, ces quatre couvrent toutes les questions d'algèbre d'ensembles que vous rencontrerez au quotidien.
L'appartenance à un ensemble est également utile comme filtre : demandez si une valeur se trouve dans un ensemble en 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"]Défi
FacileLisez deux lignes d'entrée, chacune étant une liste de chaînes de caractères séparées par des virgules. Traitez-les respectivement comme currentMembers et renewedMembers.
Affichez trois lignes, chacune triée par ordre alphabétique et jointe avec , (ou vide s'il n'y en a pas) :
Lapsed: <...>> current moins renewedNew: <...>> renewed moins currentStayed: <...>> intersection des deux
Pour l'entrée alice,bob,cara sur la ligne 1 et bob,cara,dan sur la ligne 2, la sortie est :
Lapsed: alice
New: dan
Stayed: bob,caraAide-mémoire
subtracting renvoie les éléments du premier ensemble qui ne figurent pas dans le second :
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b) // {1, 2}symmetricDifference renvoie les éléments présents dans exactement l'un des deux ensembles :
a.symmetricDifference(b) // {1, 2, 5}Utilisez un ensemble comme filtre O(1) avec contains :
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"]Essayez vous-même
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: afficher Lapsed (current - renewed), New (renewed - current), Stayed (intersection)
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots