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

جامع عناصر فريدة

جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 68 من 68.

challenge icon

التحدي

سهل

قم بإنشاء نظام لإزالة التكرار يستخدم نمط الـ set الاصطلاحي في لغة Go لتصفية العناصر الفريدة من مجموعات النصوص. سيختبر هذا التحدي قدرتك على استخدام اصطلاح map[string]struct{} لتتبع العناصر التي تمت رؤيتها وبناء مجموعات تحتوي فقط على عناصر فريدة.

ستتلقى مدخلين:

  • سلسلة نصية تحتوي على عناصر مفصولة بفاصلة (على سبيل المثال، "apple,banana,apple,orange,banana,grape,apple")
  • سلسلة نصية تحتوي على عناصر إضافية لدمجها، مفصولة أيضاً بفاصلة (على سبيل المثال، "kiwi,apple,mango,banana,kiwi")

مهمتك هي:

  1. إنشاء دالة تسمى getUniqueItems تأخذ شريحة (slice) من النصوص وتعيد شريحة جديدة تحتوي فقط على النصوص الفريدة
  2. داخل هذه الدالة، استخدم اصطلاح map[string]struct{} لتتبع العناصر التي تمت رؤيتها
  3. قم بالمرور على شريحة الإدخال ولكل عنصر:
    • تحقق مما إذا كان العنصر موجوداً في الـ set الخاص بك باستخدام اصطلاح comma ok
    • إذا لم تتم رؤية العنصر من قبل، فقم بإضافته إلى كل من الـ set وشريحة النتيجة
  4. قم بتحليل المدخل الأول عن طريق التقسيم عند الفواصل للحصول على قائمة العناصر الأولية
  5. قم بتحليل المدخل الثاني عن طريق التقسيم عند الفواصل للحصول على العناصر الإضافية
  6. اعرض رأس النظام: "=== UNIQUE ITEM COLLECTOR ==="
  7. اعرض العناصر الأصلية: "Original items: [comma-separated list of all original items]"
  8. اعرض العناصر الإضافية: "Additional items: [comma-separated list of all additional items]"
  9. استخدم دالة getUniqueItems للحصول على العناصر الفريدة من القائمة الأصلية
  10. اعرض العناصر الأصلية الفريدة: "Unique original items: [comma-separated list of unique items from original list]"
  11. قم بدمج كلتا شريحتي الإدخال في شريحة واحدة تحتوي على جميع العناصر
  12. استخدم دالة getUniqueItems للحصول على العناصر الفريدة من القائمة المدمجة
  13. اعرض العناصر الفريدة النهائية: "Final unique items: [comma-separated list of all unique items]"
  14. اعرض إحصائيات المجموعة:
    • "=== COLLECTION STATISTICS ==="
    • "Total original items: [count of original items]"
    • "Total additional items: [count of additional items]"
    • "Total combined items: [count of all items combined]"
    • "Unique items found: [count of unique items]"
    • "Duplicates removed: [total combined items minus unique items]"
  15. اعرض رسالة الإكمال: "Unique item collection completed successfully"

استخدم حزمة strings لتقسيم سلاسل الإدخال وحزمة fmt للإخراج. عند دمج العناصر للعرض، استخدم strings.Join مع فاصلة. يوضح هذا التحدي كيف يحل اصطلاح الـ set في Go بكفاءة المشكلة الشائعة المتمثلة في إزالة التكرارات من المجموعات، وهو نمط ستستخدمه بشكل متكرر في تطبيقات معالجة البيانات.

جرّب بنفسك

package main

import (
	"fmt"
	"strings"
)

func main() {
	// قراءة المدخلات
	var input1 string
	var input2 string
	fmt.Scanln(&input1)
	fmt.Scanln(&input2)
	
	// تحليل سلاسل المدخلات إلى شرائح (slices)
	originalItems := strings.Split(input1, ",")
	additionalItems := strings.Split(input2, ",")
	
	// TODO: اكتب الكود الخاص بك هنا
	// 1. قم بإنشاء دالة getUniqueItems التي تستخدم أسلوب map[string]struct{}
	// 2. معالجة العناصر الأصلية للحصول على العناصر الفريدة
	// 3. دمج كلتا الشريحتين والحصول على العناصر الفريدة من القائمة المدمجة
	// 4. حساب الإحصائيات
	
	// عرض ترويسة النظام
	fmt.Println("=== UNIQUE ITEM COLLECTOR ===")
	
	// عرض العناصر الأصلية والإضافية
	fmt.Printf("Original items: %s\n", strings.Join(originalItems, ","))
	fmt.Printf("Additional items: %s\n", strings.Join(additionalItems, ","))
	
	// TODO: عرض العناصر الأصلية الفريدة، العناصر الفريدة النهائية، والإحصائيات
	// استخدم fmt.Printf و strings.Join لتنسيق المخرجات
}

جميع دروس Logic & Flow