Menu
Coddy logo textTech

Math - Symmetric Difference

Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 65 von 66.

Die symmetrische Differenz zweier Mengen enthält Elemente, die in einer der Mengen, aber nicht in ihrer Schnittmenge sind (Elemente, die genau in einer der Mengen vorkommen).

Erstellen Sie zwei HashSet-Objekte:

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

Erstellen Sie eine neue HashSet für das Ergebnis:

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

Verwenden Sie die SymmetricExceptWith-Methode, um die symmetrische Differenz zu berechnen:

symmetricDifference.SymmetricExceptWith(set2);

Nach der Ausführung des obigen Codes enthält die symmetricDifference-Menge:

{ 1, 2, 5, 6 }

Die Elemente 3 und 4 sind in beiden Mengen, daher erscheinen sie nicht in der symmetrischen Differenz.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Methode mit dem Namen FindSymmetricDifference, die zwei Argumente annimmt:

  • Ein HashSet von Ganzzahlen (set1)
  • Ein HashSet von Ganzzahlen (set2)

Die Methode sollte ein neues HashSet<int> zurückgeben, das die symmetrische Differenz der beiden Mengen enthält. Der Rest des Programms (Eingabe lesen, Sortieren und Ausgeben der Ergebnisse) ist bereits für Sie bereitgestellt.

Spickzettel

Die symmetrische Differenz von zwei Mengen enthält Elemente, die in genau einer der Mengen enthalten sind (in einer oder der anderen, aber nicht in beiden).

Um die symmetrische Differenz zu finden, erstellen Sie eine neue HashSet aus einer Menge und verwenden Sie 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);

Ergebnis: { 1, 2, 5, 6 } (Elemente 3 und 4 werden ausgeschlossen, weil sie in beiden Mengen vorkommen)

Probier es selbst

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

class Program
{
    public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
    {
        // Schreibe deinen Code hier
    }
    
    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);
        
        // Drucke das Ergebnis in aufsteigender Reihenfolge
        int[] orderedResult = result.OrderBy(x => x).ToArray();
        foreach (int num in orderedResult)
        {
            Console.WriteLine(num);
        }
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf