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.
Desafio
FácilLeia duas linhas de entrada. Cada uma é uma lista de inteiros separados por vírgula.
Trate-as como conjuntos a e b. Imprima duas linhas:
- A interseção, ordenada de forma crescente, unida com
,(ou uma linha vazia quando estiver vazia) - 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,6Folha 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 conjuntosAmbos 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
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
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras