Menu
Coddy logo textTech

Math - Symmetric Difference

Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 65 de 66.

La diferencia simétrica de dos conjuntos contiene elementos que están en uno u otro de los conjuntos, pero no en su intersección (elementos que aparecen en exactamente uno de los conjuntos).

Crea dos objetos HashSet:

HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };

Crea un nuevo HashSet para el resultado:

HashSet<int> symmetricDifference = new HashSet<int>(set1);

Utiliza el método SymmetricExceptWith para calcular la diferencia simétrica:

symmetricDifference.SymmetricExceptWith(set2);

Después de ejecutar el código anterior, el conjunto symmetricDifference contiene:

{ 1, 2, 5, 6 }

Los elementos 3 y 4 están en ambos conjuntos, por lo que no aparecen en la diferencia simétrica.

challenge icon

Desafío

Fácil

Crea un método llamado FindSymmetricDifference que toma dos argumentos:

  • Un HashSet de enteros (set1)
  • Un HashSet de enteros (set2)

El método debe devolver un nuevo HashSet<int> que contenga la diferencia simétrica de los dos conjuntos. El resto del programa (lectura de entrada, ordenación e impresión de resultados) ya está proporcionado para ti.

Hoja de referencia

La diferencia simétrica de dos conjuntos contiene elementos que están en uno u otro conjunto, pero no en ambos (elementos que aparecen en exactamente uno de los conjuntos).

Para encontrar la diferencia simétrica, crea un nuevo HashSet a partir de un conjunto y usa SymmetricExceptWith():

HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };

HashSet<int> symmetricDifference = new HashSet<int>(set1);
symmetricDifference.SymmetricExceptWith(set2);

Resultado: { 1, 2, 5, 6 } (los elementos 3 y 4 se excluyen porque aparecen en ambos conjuntos)

Pruébalo tú mismo

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
    {
        // Escribe tu código aquí
    }
    
    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);
        
        // Imprime el resultado en orden ascendente
        int[] orderedResult = result.OrderBy(x => x).ToArray();
        foreach (int num in orderedResult)
        {
            Console.WriteLine(num);
        }
    }
}
quiz iconPonte a prueba

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