Menu
CoddyTech

Toán học: hiệu đối xứng

Thuộc phần Logic và luồng chương trình trong hành trình C# của Coddy. Bài học 65 trên 66.

Hiệu của hai tập hợp gồm các phần tử có trong một trong hai tập hợp, nhưng không nằm trong giao của chúng (các phần tử chỉ xuất hiện trong một tập hợp).

Tạo hai đối tượng HashSet:

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

Tạo một HashSet mới để lưu kết quả:

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

Dùng phương thức SymmetricExceptWith để tính hiệu đối xứng:

symmetricDifference.SymmetricExceptWith(set2);

Sau khi chạy đoạn code trên, tập hợp symmetricDifference chứa:

{ 1, 2, 5, 6 }

Phần tử 3 và 4 có trong cả hai tập hợp, nên chúng không xuất hiện trong hiệu đối xứng.

challenge icon

Thử thách

Dễ

Tạo một phương thức tên là FindSymmetricDifference nhận hai đối số:

  • Một HashSet gồm các số nguyên (set1)
  • Một HashSet gồm các số nguyên (set2)

Phương thức này cần trả về một HashSet<int> mới chứa hiệu đối xứng của hai tập hợp. Phần còn lại của chương trình (đọc đầu vào, sắp xếp và in kết quả) đã được cung cấp sẵn cho bạn.

Tự làm thử

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

class Program
{
    public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
    {
        // Viết code của bạn tại đây
    }
    
    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);
        
        // In kết quả theo thứ tự tăng dần
        int[] orderedResult = result.OrderBy(x => x).ToArray();
        foreach (int num in orderedResult)
        {
            Console.WriteLine(num);
        }
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C# online