Menu
Coddy logo textTech

Differenza e differenza simmetrica

Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 20 di 56.

Altre due operazioni sugli insiemi completano il kit di strumenti.

subtracting restituisce gli elementi del primo insieme che non sono nel secondo:

let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b)             // {1, 2}

symmetricDifference restituisce gli elementi presenti in esattamente uno dei due insiemi, mai in entrambi:

a.symmetricDifference(b)     // {1, 2, 5}

Insieme a union e intersection, queste quattro operazioni coprono tutti i quesiti di algebra degli insiemi che incontrerai nella vita quotidiana.

L'appartenenza a un insieme è utile anche come filtro: verifica se un valore si trova in un insieme in 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

Sfida

Facile

Leggi due righe di input, ciascuna contenente un elenco di stringhe separate da virgole. Considerale rispettivamente come currentMembers e renewedMembers.

Stampa tre righe, ciascuna ordinata alfabeticamente e unita con , (oppure vuota se non contiene elementi):

  1. Lapsed: <...> > elementi presenti in current ma non in renewed
  2. New: <...> > elementi presenti in renewed ma non in current
  3. Stayed: <...> > intersezione dei due insiemi

Con l'input alice,bob,cara sulla riga 1 e bob,cara,dan sulla riga 2, l'output è:

Lapsed: alice
New: dan
Stayed: bob,cara

Provalo tu

let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))

// TODO: stampa Lapsed (current - renewed), New (renewed - current), Stayed (intersezione)
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift