Menu
Coddy logo textTech

Maths - Différence d'ensembles

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

L'opération de différence d'ensemble crée un nouvel ensemble avec les éléments qui existent dans le premier ensemble mais pas dans le second ensemble.

Créez deux HashSets :

HashSet<string> set1 = new HashSet<string>();
HashSet<string> set2 = new HashSet<string>();

Ajoutez des éléments aux deux ensembles :

set1.Add("Apple");
set1.Add("Banana");
set1.Add("Cherry");

set2.Add("Banana");
set2.Add("Kiwi");

Calculer la différence (éléments dans set1 mais pas dans set2) :

HashSet<string> difference = new HashSet<string>(set1);
difference.ExceptWith(set2);

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

["Apple", "Cherry"]
challenge icon

Défi

Facile

Créez une méthode nommée GetSetDifference qui prend deux HashSets d'entiers (set1 et set2) et retourne un nouveau HashSet contenant la différence d'ensemble (éléments dans set1 qui ne sont pas dans set2).

Aide-mémoire

La différence d'ensembles crée un nouvel ensemble avec les éléments qui existent dans le premier ensemble mais pas dans le second.

Créer des HashSets :

HashSet<string> set1 = new HashSet<string>();
HashSet<string> set2 = new HashSet<string>();

Calculer la différence en utilisant ExceptWith() :

HashSet<string> difference = new HashSet<string>(set1);
difference.ExceptWith(set2);

Essayez vous-même

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

class Program {
    public static HashSet<int> GetSetDifference(HashSet<int> set1, HashSet<int> set2) {
        // Écrivez votre code ici
        return null;
    }
    
    static void Main(string[] args) {
        // Lire la première ligne pour le 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 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 en 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[] set1Input = line1.Split(' ');
            foreach (string item in set1Input) {
                if (int.TryParse(item, out int num)) {
                    set1.Add(num);
                }
            }
        }
        
        // Lire la deuxième ligne pour le 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 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 en 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[] set2Input = line2.Split(' ');
            foreach (string item in set2Input) {
                if (int.TryParse(item, out int num)) {
                    set2.Add(num);
                }
            }
        }
        
        HashSet<int> difference = GetSetDifference(set1, set2);
        
        // Imprimer le résultat
        List<int> sortedResult = new List<int>(difference);
        sortedResult.Sort();
        foreach (int item in sortedResult) {
            Console.WriteLine(item);
        }
    }
}
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