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

رياضيات - الفرق بين المجموعات

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

تنشئ عملية فرق المجموعات (Set Difference) مجموعة جديدة تحتوي على العناصر الموجودة في المجموعة الأولى ولكنها ليست موجودة في المجموعة الثانية.

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

HashSet<string> set1 = new HashSet<string>();
HashSet<string> set2 = new HashSet<string>();

أضف عناصر إلى كلتا المجموعتين:

set1.Add("Apple");
set1.Add("Banana");
set1.Add("Cherry");

set2.Add("Banana");
set2.Add("Kiwi");

احسب الفرق (العناصر الموجودة في set1 ولكن ليست في set2):

HashSet<string> difference = new HashSet<string>(set1);
difference.ExceptWith(set2);

بعد تنفيذ الكود أعلاه، تحتوي مجموعة الفرق على:

["Apple", "Cherry"]
challenge icon

التحدي

سهل

قم بإنشاء دالة تسمى GetSetDifference تأخذ اثنين من الـ HashSets من الأعداد الصحيحة (set1 و set2) وتعيد HashSet جديداً يحتوي على فرق المجموعة (العناصر الموجودة في set1 وليست في set2).

ورقة مرجعية

يؤدي فرق المجموعات (Set Difference) إلى إنشاء مجموعة جديدة تحتوي على العناصر الموجودة في المجموعة الأولى ولكنها غير موجودة في المجموعة الثانية.

إنشاء HashSets:

HashSet<string> set1 = new HashSet<string>();
HashSet<string> set2 = new HashSet<string>();

احسب الفرق باستخدام ExceptWith():

HashSet<string> difference = new HashSet<string>(set1);
difference.ExceptWith(set2);

جرّب بنفسك

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

class Program {
    public static HashSet<int> GetSetDifference(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[] set1Input = line1.Split(' ');
            foreach (string item in set1Input) {
                if (int.TryParse(item, out int num)) {
                    set1.Add(num);
                }
            }
        }
        
        // قراءة السطر الثاني للمجموعة الثانية
        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[] set2Input = line2.Split(' ');
            foreach (string item in set2Input) {
                if (int.TryParse(item, out int num)) {
                    set2.Add(num);
                }
            }
        }
        
        HashSet<int> difference = GetSetDifference(set1, set2);
        
        // طباعة النتيجة
        List<int> sortedResult = new List<int>(difference);
        sortedResult.Sort();
        foreach (int item in sortedResult) {
            Console.WriteLine(item);
        }
    }
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow