Menu
Coddy logo textTech

Matematyka — różnica symetryczna

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 65 z 66.

Różnica symetryczna dwóch zbiorów zawiera elementy, które należą do któregokolwiek z tych zbiorów, ale nie do ich części wspólnej (elementy występujące dokładnie w jednym z tych zbiorów).

Utwórz dwa obiekty HashSet:

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

Utwórz nowy HashSet dla wyniku:

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

Użyj metody SymmetricExceptWith, aby obliczyć różnicę symetryczną:

symmetricDifference.SymmetricExceptWith(set2);

Po wykonaniu powyższego kodu zbiór symmetricDifference zawiera:

{ 1, 2, 5, 6 }

Elementy 3 i 4 należą do obu zbiorów, więc nie pojawiają się w różnicy symetrycznej.

challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie FindSymmetricDifference, która przyjmuje dwa argumenty:

  • HashSet liczb całkowitych (set1)
  • HashSet liczb całkowitych (set2)

Metoda powinna zwrócić nowy HashSet<int> zawierający różnicę symetryczną tych dwóch zbiorów. Pozostała część programu (odczytywanie danych wejściowych, sortowanie i wypisywanie wyników) jest już dla Ciebie przygotowana.

Spróbuj swoich sił

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

class Program
{
    public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
    {
        // Wpisz tutaj swój kod
    }
    
    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);
        
        // Wypisz wynik w kolejności rosnącej
        int[] orderedResult = result.OrderBy(x => x).ToArray();
        foreach (int num in orderedResult)
        {
            Console.WriteLine(num);
        }
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online