Matemática - Diferença Simétrica
Parte da seção Lógica & Fluxo do Journey de C# da Coddy. Lição 65 de 66.
A diferença simétrica de dois conjuntos contém elementos que estão em um ou outro dos conjuntos, mas não na sua interseção (elementos que aparecem em exatamente um dos conjuntos).
Crie dois objetos HashSet:
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };Crie um novo HashSet para o resultado:
HashSet<int> symmetricDifference = new HashSet<int>(set1);Use o método SymmetricExceptWith para calcular a diferença simétrica:
symmetricDifference.SymmetricExceptWith(set2);Após executar o código acima, o conjunto symmetricDifference contém:
{ 1, 2, 5, 6 }Os elementos 3 e 4 estão em ambos os conjuntos, portanto, eles não aparecem na diferença simétrica.
Desafio
FácilCrie um método chamado FindSymmetricDifference que aceite dois argumentos:
- Um HashSet de inteiros (
set1) - Um HashSet de inteiros (
set2)
O método deve retornar um novo HashSet<int> contendo a diferença simétrica dos dois conjuntos. O restante do programa (leitura da entrada, ordenação e impressão dos resultados) já foi fornecido para você.
Experimente você mesmo
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
{
// Escreva seu código aqui
}
static void Main(string[] args)
{
string[] input1 = Console.ReadLine().Split(',');
string[] input2 = Console.ReadLine().Split(',');
HashSet<int> set1 = new HashSet<int>();
HashSet<int> set2 = new HashSet<int>();
foreach (string s in input1)
{
if (int.TryParse(s.Trim(), out int num))
{
set1.Add(num);
}
}
foreach (string s in input2)
{
if (int.TryParse(s.Trim(), out int num))
{
set2.Add(num);
}
}
HashSet<int> result = FindSymmetricDifference(set1, set2);
// Imprima o resultado em ordem crescente
int[] orderedResult = result.OrderBy(x => x).ToArray();
foreach (int num in orderedResult)
{
Console.WriteLine(num);
}
}
}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 & Fluxo
1Matrizes Multidimensionais
Noções Básicas de Matrizes 2DDeclaração e Inicialização de Matrizes 2DAcesso aos Elementos de Matrizes 2DLoops Aninhados com Matrizes 2DMatrizes IrregularesOperações Comuns com MatrizesRevisão - Multidimensional4Técnicas de Controle de Fluxo
Retornos AntecipadosCláusulas de GuardaInstruções de Salto (goto)Break e ContinueSimplificando Condicionais Aninhadas7Operadores Lógicos Avançados
Avaliação de Curto-CircuitoOperadores Lógicos CondicionaisPrecedência de OperadoresRevisão - Operadores Avançados2Tomada de Decisões Avançada
Múltiplas CondiçõesLógica Booleana ComplexaComparação entre If e SwitchInstruções Switch AninhadasRevisão - Decisões Avançadas5Tratamento de Exceções
Noções básicas de Try-CatchTipos de ExceçãoMúltiplos blocos CatchTrabalhando com ArquivosBloco FinallyUsando Using vs. Try-FinallyExceções PersonalizadasRecapitulação - Tratamento de Erros3Aprimoramentos de Loops
Desempenho de LoopsIteração de Estruturas ComplexasCada Tipo de LoopRefatoração de LoopsRevisão - Loops Otimizados6Tratamento de Nulos
Fundamentos de Referências NulasTipos de Valor AnuláveisPadrões de Verificação de NulosProgramação DefensivaRecapitulação — Segurança contra Nulos9HashMap Parte 1
O que é um HashMap?Declarar um HashMapVerificar se a chave existeAcessando valoresModificando dicionáriosRevisão - HashMap12HashSet Parte 2
Matemática - União de HashSetsMatemática - Interseção de HashSetMatemática - Diferença de ConjuntosMatemática - Diferença SimétricaIterando sobre ConjuntosPratique por conta própria: Compilador de C# online