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.
Défi
FacileCré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);
}
}
}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
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety9HashMap Partie 1
Qu'est-ce qu'un HashMap ?Déclarer un HashMapVérifier si une clé existeAccéder aux valeursModifier des dictionnairesRécapitulatif - HashMap12HashSet Partie 2
Maths - Union de HashSetsMaths - Intersection de HashSetsMaths - Différence d'ensemblesMaths - Différence symétriqueItération sur les ensembles