Menu
Coddy logo textTech

Maths - Union de HashSets

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

L'opération d'Union combine deux ensembles pour créer un nouvel ensemble qui contient tous les éléments des deux ensembles, sans doublons.

Créez deux HashSets :

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

Utilisez la méthode Union pour combiner les ensembles :

HashSet<int> unionSet = new HashSet<int>(set1);
unionSet.UnionWith(set2);

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

[1, 2, 3, 4, 5]

Remarquez que l'élément 3 n'apparaît qu'une seule fois dans le résultat, car HashSet n'autorise pas les doublons.

challenge icon

Défi

Facile

Créez une méthode nommée UnionSets qui prend deux HashSets d'entiers en paramètres et retourne un nouveau HashSet contenant l'union des deux ensembles.

La lecture de l'entrée et l'affichage de la sortie sont déjà gérés pour vous — concentrez-vous sur l'implémentation du corps de la méthode UnionSets.

Aide-mémoire

L'opération Union combine deux ensembles pour créer un nouvel ensemble contenant tous les éléments des deux ensembles, sans doublons.

Créez deux HashSets :

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

Utilisez la méthode Union pour combiner les ensembles :

HashSet<int> unionSet = new HashSet<int>(set1);
unionSet.UnionWith(set2);

Le résultat contient tous les éléments uniques des deux ensembles. Les doublons sont automatiquement supprimés.

Essayez vous-même

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

class Program
{
    public static HashSet<int> UnionSets(HashSet<int> set1, HashSet<int> set2)
    {
        // Écrivez votre code ici
        return null;
    }
    
    static void Main(string[] args)
    {
        // Lire la première ligne pour vérifier le format du premier ensemble
        string line1 = Console.ReadLine();
        HashSet<int> set1 = new HashSet<int>();
        
        // Vérifier si le premier ensemble est au format tableau JSON
        if (line1 != null && line1.StartsWith("[") && line1.EndsWith("]"))
        {
            try
            {
                // Extraire le contenu entre les crochets
                string arrayContent = line1.Substring(1, line1.Length - 2);
                
                // Essayer d'analyser le contenu du tableau JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Supprimer les guillemets s'ils sont présents
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Analyser comme un entier et ajouter à l'ensemble
                    if (int.TryParse(cleanValue, out int num))
                    {
                        set1.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing first set: {ex.Message}");
                return;
            }
        }
        else
        {
            // Traiter l'entrée traditionnelle séparée par des espaces pour le premier ensemble
            string[] input1 = line1.Split(' ');
            foreach (string num in input1)
            {
                if (int.TryParse(num, out int parsedNum))
                {
                    set1.Add(parsedNum);
                }
            }
        }
        
        // Lire la deuxième ligne pour vérifier le format du deuxième ensemble
        string line2 = Console.ReadLine();
        HashSet<int> set2 = new HashSet<int>();
        
        // Vérifier si le deuxième ensemble est au format tableau JSON
        if (line2 != null && line2.StartsWith("[") && line2.EndsWith("]"))
        {
            try
            {
                // Extraire le contenu entre les crochets
                string arrayContent = line2.Substring(1, line2.Length - 2);
                
                // Essayer d'analyser le contenu du tableau JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Supprimer les guillemets s'ils sont présents
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Analyser comme un entier et ajouter à l'ensemble
                    if (int.TryParse(cleanValue, out int num))
                    {
                        set2.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing second set: {ex.Message}");
                return;
            }
        }
        else
        {
            // Traiter l'entrée traditionnelle séparée par des espaces pour le deuxième ensemble
            string[] input2 = line2.Split(' ');
            foreach (string num in input2)
            {
                if (int.TryParse(num, out int parsedNum))
                {
                    set2.Add(parsedNum);
                }
            }
        }
        
        // Obtenir l'union et afficher le résultat
        HashSet<int> unionSet = UnionSets(set1, set2);
        Console.WriteLine(string.Join(" ", unionSet.OrderBy(x => x)));
    }
}
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