Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

رياضيات - اتحاد الـ HashSets

جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 62 من 66.

تجمع عملية الاتحاد (Union) بين مجموعتين لإنشاء مجموعة جديدة تحتوي على جميع العناصر من كلتا المجموعتين، دون تكرار.

أنشئ مجموعتي HashSet:

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

استخدم طريقة Union لدمج المجموعات:

HashSet<int> unionSet = new HashSet<int>(set1);
unionSet.UnionWith(set2);

بعد تنفيذ الكود أعلاه، يحتوي unionSet على:

[1, 2, 3, 4, 5]

لاحظ أن العنصر 3 يظهر مرة واحدة فقط في النتيجة، حيث أن HashSet لا يسمح بالتكرار.

challenge icon

التحدي

سهل

قم بإنشاء دالة باسم UnionSets تأخذ اثنين من HashSets من الأعداد الصحيحة كمعاملات (parameters) وتُرجع HashSet جديدًا يحتوي على اتحاد المجموعتين.

تمت معالجة قراءة المدخلات وطباعة المخرجات بالفعل من أجلك — ركز على تنفيذ جسم الدالة UnionSets.

ورقة مرجعية

عملية الاتحاد (Union) تجمع بين مجموعتين لإنشاء مجموعة جديدة تحتوي على جميع العناصر من كلتا المجموعتين، دون تكرار.

قم بإنشاء اثنين من HashSets:

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

استخدم طريقة Union لدمج المجموعات:

HashSet<int> unionSet = new HashSet<int>(set1);
unionSet.UnionWith(set2);

تحتوي النتيجة على جميع العناصر الفريدة من كلتا المجموعتين. يتم إزالة التكرارات تلقائياً.

جرّب بنفسك

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

class Program
{
    public static HashSet<int> UnionSets(HashSet<int> set1, HashSet<int> set2)
    {
        // اكتب الكود الخاص بك هنا
        return null;
    }
    
    static void Main(string[] args)
    {
        // قراءة السطر الأول للتحقق من تنسيق المجموعة الأولى
        string line1 = Console.ReadLine();
        HashSet<int> set1 = new HashSet<int>();
        
        // التحقق مما إذا كانت المجموعة الأولى بتنسيق مصفوفة JSON
        if (line1 != null && line1.StartsWith("[") && line1.EndsWith("]"))
        {
            try
            {
                // استخراج المحتوى بين الأقواس المربعة
                string arrayContent = line1.Substring(1, line1.Length - 2);
                
                // محاولة تحليل محتوى مصفوفة JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // إزالة أي علامات اقتباس إذا كانت موجودة
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // التحويل إلى عدد صحيح وإضافته إلى المجموعة
                    if (int.TryParse(cleanValue, out int num))
                    {
                        set1.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing first set: {ex.Message}");
                return;
            }
        }
        else
        {
            // معالجة المدخلات التقليدية المفصولة بمسافات للمجموعة الأولى
            string[] input1 = line1.Split(' ');
            foreach (string num in input1)
            {
                if (int.TryParse(num, out int parsedNum))
                {
                    set1.Add(parsedNum);
                }
            }
        }
        
        // قراءة السطر الثاني للتحقق من تنسيق المجموعة الثانية
        string line2 = Console.ReadLine();
        HashSet<int> set2 = new HashSet<int>();
        
        // التحقق مما إذا كانت المجموعة الثانية بتنسيق مصفوفة JSON
        if (line2 != null && line2.StartsWith("[") && line2.EndsWith("]"))
        {
            try
            {
                // استخراج المحتوى بين الأقواس المربعة
                string arrayContent = line2.Substring(1, line2.Length - 2);
                
                // محاولة تحليل محتوى مصفوفة JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // إزالة أي علامات اقتباس إذا كانت موجودة
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // التحويل إلى عدد صحيح وإضافته إلى المجموعة
                    if (int.TryParse(cleanValue, out int num))
                    {
                        set2.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing second set: {ex.Message}");
                return;
            }
        }
        else
        {
            // معالجة المدخلات التقليدية المفصولة بمسافات للمجموعة الثانية
            string[] input2 = line2.Split(' ');
            foreach (string num in input2)
            {
                if (int.TryParse(num, out int parsedNum))
                {
                    set2.Add(parsedNum);
                }
            }
        }
        
        // الحصول على الاتحاد وطباعة النتيجة
        HashSet<int> unionSet = UnionSets(set1, set2);
        Console.WriteLine(string.Join(" ", unionSet.OrderBy(x => x)));
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow