Menu
Coddy logo textTech

Maths - Différence symétrique

Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 65 sur 66.

La différence symétrique de deux ensembles contient les éléments qui sont dans l'un ou l'autre des ensembles, mais pas dans leur intersection (éléments qui apparaissent dans exactement un des ensembles).

Créez deux objets HashSet :

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

Créez un nouveau HashSet pour le résultat :

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

Utilisez la méthode SymmetricExceptWith pour calculer la différence symétrique :

symmetricDifference.SymmetricExceptWith(set2);

Après l'exécution du code ci-dessus, l'ensemble symmetricDifference contient :

{ 1, 2, 5, 6 }

Les éléments 3 et 4 sont dans les deux ensembles, ils n'apparaissent donc pas dans la différence symétrique.

challenge icon

Défi

Facile

Créez une méthode nommée FindSymmetricDifference qui prend deux arguments :

  • Un HashSet d'entiers (set1)
  • Un HashSet d'entiers (set2)

La méthode doit retourner un nouveau HashSet<int> contenant la différence symétrique des deux ensembles. Le reste du programme (lecture de l'entrée, tri et impression des résultats) est déjà fourni pour vous.

Aide-mémoire

La différence symétrique de deux ensembles contient les éléments qui sont dans l'un ou l'autre ensemble, mais pas dans les deux (éléments qui apparaissent dans exactement un des ensembles).

Pour trouver la différence symétrique, créez un nouveau HashSet à partir d'un ensemble et utilisez 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);

Résultat : { 1, 2, 5, 6 } (les éléments 3 et 4 sont exclus car ils apparaissent dans les deux ensembles)

Essayez vous-même

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

class Program
{
    public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
    {
        // Écrivez votre code ici
    }
    
    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);
        
        // Affichez le résultat par ordre croissant
        int[] orderedResult = result.OrderBy(x => x).ToArray();
        foreach (int num in orderedResult)
        {
            Console.WriteLine(num);
        }
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux