Unión e intersección
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 19 de 56.
Los conjuntos destacan cuando realizas preguntas de pertenencia que involucran dos colecciones.
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]union devuelve todos los elementos de ambos lados:
a.union(b) // {1, 2, 3, 4, 5, 6}intersection devuelve solo los elementos que aparecen en ambos:
a.intersection(b) // {3, 4}Cada método devuelve un nuevo Set. Los conjuntos originales permanecen intactos. El orden de iteración sobre el resultado no está garantizado, ordene antes de imprimir.
Desafío
FácilLee dos líneas de entrada. Cada una es una lista de enteros separados por comas.
Trátalas como conjuntos a y b. Imprime dos líneas:
- La intersección, ordenada de forma ascendente, unida con
,(o una línea vacía cuando esté vacía) - La unión, ordenada de forma ascendente, unida con
,
Para la entrada 1,2,3,4 en la primera línea y 3,4,5,6 en la segunda, la salida es:
3,4
1,2,3,4,5,6Hoja de referencia
Operaciones de conjuntos en Swift:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]
a.union(b) // {1, 2, 3, 4, 5, 6} - elementos de cualquiera de los conjuntos
a.intersection(b) // {3, 4} - elementos en ambos conjuntosAmbos métodos devuelven un nuevo Set; los originales no cambian. Ordena antes de imprimir ya que el orden de iteración no está garantizado.
Pruébalo tú mismo
let a = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
let b = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
// TODO: intersección ordenada unida, unión ordenada unida
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 palabras