Menu
Coddy logo textTech

União e Interseção

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 19 de 56.

Sets se destacam quando você faz perguntas de pertinência envolvendo duas coleções.

let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]

union retorna todos os elementos de ambos os lados:

a.union(b)              // {1, 2, 3, 4, 5, 6}

intersection retorna apenas os elementos que aparecem em ambos:

a.intersection(b)       // {3, 4}

Cada método retorna um novo Set. Os conjuntos originais permanecem inalterados. A ordem de iteração sobre o resultado não é garantida, ordene antes de imprimir.

challenge icon

Desafio

Fácil

Leia duas linhas de entrada. Cada uma é uma lista de inteiros separados por vírgula.

Trate-as como conjuntos a e b. Imprima duas linhas:

  1. A interseção, ordenada de forma crescente, unida com , (ou uma linha vazia quando estiver vazia)
  2. A união, ordenada de forma crescente, unida com ,

Para a entrada 1,2,3,4 na primeira linha e 3,4,5,6 na segunda, a saída é:

3,4
1,2,3,4,5,6

Folha de consulta

Operações de conjunto em 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 qualquer um dos conjuntos
a.intersection(b)  // {3, 4} - elementos em ambos os conjuntos

Ambos os métodos retornam um novo Set; os originais permanecem inalterados. Ordene antes de imprimir, pois a ordem de iteração não é garantida.

Experimente você mesmo

let a = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
let b = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })

// TODO: interseção ordenada e unida, união ordenada e unida
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo