Resta y diferencia simétrica
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy. Lección 20 de 56.
Dos operaciones de conjuntos más completan el kit de herramientas.
subtracting devuelve los elementos del primer conjunto que no están en el segundo:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b) // {1, 2}symmetricDifference devuelve los elementos que están en exactamente uno de los dos conjuntos, nunca en ambos:
a.symmetricDifference(b) // {1, 2, 5}Junto con union e intersection, estos cuatro cubren todas las preguntas de álgebra de conjuntos que encontrarás en el día a día.
La pertenencia a un conjunto también es útil como un filtro: pregunta si un valor reside en un conjunto 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"]Desafío
FácilLee dos líneas de entrada, cada una con una lista de cadenas separadas por comas. Trátalas como currentMembers y renewedMembers respectivamente.
Imprime tres líneas, cada una ordenada alfabéticamente y unida con , (o vacía cuando no haya ninguna):
Lapsed: <...>> current menos renewedNew: <...>> renewed menos currentStayed: <...>> intersección de las dos
Para la entrada alice,bob,cara en la línea 1 y bob,cara,dan en la línea 2, la salida es:
Lapsed: alice
New: dan
Stayed: bob,caraPruébalo tú mismo
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: imprimir Lapsed (current - renewed), New (renewed - current), Stayed (intersection)
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Strings a fondo
Conteo e índicesMayúsculas, minúsculas y TrimBúsqueda en StringsDividir y unirReemplazo de subcadenasResumen: Validación de usuario4Conjuntos
Crear conjuntosUnión e intersecciónResta y diferencia simétricaSubconjunto y superconjuntoResumen - Filtro de etiquetas7Proyecto - Seguimiento de hábitos
Descripción general del proyectoMarcar como completado10Proyecto - Motor de cuestionarios
Descripción general del proyectoHacer preguntas2Rangos e Intervalos
Cerrados vs. SemiabiertosSaltos (Stride)Métodos de RangosRangos en SwitchResumen - Cuadrícula de calendario5Funciones de orden superior Pt. 1
MapFilterReduceEncadenar map, filter, reduceResumen - Estadísticas de palabrasPractica por tu cuenta: Playground de Swift