Menu
Coddy logo textTech

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"]
challenge icon

Défi

Facile

Lisez 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) :

  1. Lapsed: <...> > current moins renewed
  2. New: <...> > renewed moins current
  3. Stayed: <...> > 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,cara

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)
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Swift