رياضيات - اتحاد الـ 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 لا يسمح بالتكرارات.
التحدي
سهلأنشئ أسلوبًا باسم 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)));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Null9HashMap الجزء الأول
ما هو الـ HashMap؟تعريف HashMapالتحقق من وجود المفتاحالوصول إلى القيمتعديل القواميسملخص - HashMap12HashSet الجزء الثاني
رياضيات - اتحاد الـ HashSetsرياضيات - تقاطع الـ HashSetرياضيات - الفرق بين المجموعاترياضيات - الفرق المتماثلالتكرار عبر المجموعات (Sets)تدرّب بنفسك: مترجم C# عبر الإنترنت