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"]Sfida
FacileLeggi 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):
Lapsed: <...>> elementi presenti in current ma non in renewedNew: <...>> elementi presenti in renewed ma non in currentStayed: <...>> 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,caraProvalo tu
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: stampa Lapsed (current - renewed), New (renewed - current), Stayed (intersezione)
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Conteggio e indiciMaiuscole, minuscole e rimozione degli spaziRicerca nelle stringheSuddivisione e unioneSostituzione di sottostringheRiepilogo - Verifica del nome utente4Insiemi
Creare insiemiUnione e intersezioneDifferenza e differenza simmetricaSottoinsieme e sovrainsiemeRiepilogo - Filtro per tag7Progetto - Tracciatore di abitudini
Panoramica del progettoSegna come completato10Progetto - Motore di quiz
Panoramica del progettoPorre domande2Intervalli e passi
Intervalli chiusi e semiapertiPassoMetodi degli intervalliIntervalli in switchRiepilogo - Griglia del calendario5Funzioni di ordine superiore Parte 1
MapFilterReduceConcatenare map, filter e reduceRiepilogo - Statistiche sulle paroleEsercitati da solo: Playground Swift