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

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

جزء من قسم المنطق وتدفق التنفيذ في رحلة C# على Coddy. الدرس 62 من 66.

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

أنشئ مجموعتي 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 يظهر مرة واحدة فقط في result، لأن HashSet لا يسمح بالتكرارات.

challenge icon

التحدي

سهل

أنشئ أسلوبًا باسم UnionSets يأخذ مجموعتي HashSet من الأعداد الصحيحة كمعلمتين ويُرجع مجموعة HashSet جديدة تحتوي على اتحاد المجموعتين.

تمت معالجة قراءة input وطباعة result مسبقًا نيابةً عنك: ركّز على تنفيذ نص الأسلوب UnionSets.

جرّب بنفسك

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اختبر نفسك

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

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C# عبر الإنترنت