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

مراجعة - قائمة ضيوف فريدة

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

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظام تخطيط للفعاليات من خلال تحليل قوائم الضيوف من مصدرين مختلفين للدعوات. يجب على برنامجك القيام بما يلي:

  1. قراءة مدخل نصي (string) يمثل اسم الفعالية
  2. قراءة مدخلات نصية متعددة تمثل الضيوف من قائمة الدعوات الأولى (سينتهي الإدخال عندما تتلقى "list1_done")
  3. قراءة مدخلات نصية متعددة تمثل الضيوف من قائمة الدعوات الثانية (سينتهي الإدخال عندما تتلقى "list2_done")
  4. تحويل كلتا قائمتي الضيوف إلى مجموعات (Sets) للتعامل تلقائياً مع أي تكرارات داخل كل قائمة
  5. استخدام طريقة union() للعثور على جميع الضيوف الفريدين المدعوين للفعالية
  6. استخدام طريقة intersection() للعثور على الضيوف الذين يظهرون في كلتا قائمتي الدعوات
  7. استخدام طريقة difference() للعثور على الضيوف الموجودين فقط في قائمة الدعوات الأولى
  8. طباعة تحليل قائمة الضيوف بالتنسيق الدقيق الموضح أدناه

على سبيل المثال، إذا كان اسم الفعالية هو "Birthday Party"، وكانت القائمة الأولى تحتوي على "Alice"، "Bob"، "Charlie"، "Diana"، والقائمة الثانية تحتوي على "Bob"، "Diana"، "Eve"، "Frank"، فيجب أن يخرج برنامجك ما يلي:

Event: Birthday Party
First invitation list: {Alice, Bob, Charlie, Diana}
Second invitation list: {Bob, Diana, Eve, Frank}
All unique guests: {Alice, Bob, Charlie, Diana, Eve, Frank}
Guests on both lists: {Bob, Diana}
Guests only on first list: {Alice, Charlie}
Total unique guests: 6
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

إذا كان اسم الفعالية هو "Wedding Reception"، وكانت القائمة الأولى تحتوي على "John"، "Mary"، "Sarah"، والقائمة الثانية تحتوي على "Tom"، "Lisa"، "Mike"، فيجب أن يخرج برنامجك ما يلي:

Event: Wedding Reception
First invitation list: {John, Mary, Sarah}
Second invitation list: {Tom, Lisa, Mike}
All unique guests: {John, Mary, Sarah, Tom, Lisa, Mike}
Guests on both lists: {}
Guests only on first list: {John, Mary, Sarah}
Total unique guests: 6
Duplicate invitations: 0
First list only: 3
Status: Guest list analysis completed

إذا كان اسم الفعالية هو "Company Meeting"، وكانت القائمة الأولى تحتوي على "Alex"، "Jordan"، "Taylor"، "Morgan"، "Alex"، والقائمة الثانية تحتوي على "Jordan"، "Taylor"، "Casey"، "Jordan"، فيجب أن يخرج برنامجك ما يلي:

Event: Company Meeting
First invitation list: {Alex, Jordan, Taylor, Morgan}
Second invitation list: {Jordan, Taylor, Casey}
All unique guests: {Alex, Jordan, Taylor, Morgan, Casey}
Guests on both lists: {Jordan, Taylor}
Guests only on first list: {Alex, Morgan}
Total unique guests: 5
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

يجب أن يوضح برنامجك جميع عمليات المجموعات الثلاث: union() لدمج جميع الضيوف، و intersection() للعثور على الضيوف الذين يظهرون في كلتا القائمتين، و difference() للعثور على الضيوف الحصريين للقائمة الأولى. قم بتحويل قوائم الإدخال إلى مجموعات (Sets) أولاً للتعامل مع أي تكرارات داخل القوائم الفردية، ثم قم بإجراء عمليات المجموعات لتحليل توزيع الضيوف.

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة اسم الفعالية
  String? eventName = stdin.readLineSync();
  
  // قراءة قائمة الدعوة الأولى
  List<String> firstList = [];
  String? input;
  while ((input = stdin.readLineSync()) != "list1_done") {
    if (input != null) {
      firstList.add(input);
    }
  }
  
  // قراءة قائمة الدعوة الثانية
  List<String> secondList = [];
  while ((input = stdin.readLineSync()) != "list2_done") {
    if (input != null) {
      secondList.add(input);
    }
  }
  
  // تحويل القوائم إلى مجموعات
  Set<String> firstSet = firstList.toSet();
  Set<String> secondSet = secondList.toSet();
  
  // TODO: اكتب الكود الخاص بك أدناه
  // استخدم دوال union() و intersection() و difference() لتحليل قوائم الضيوف
  // حساب جميع الضيوف الفريدين، والضيوف الموجودين في كلتا القائمتين، والضيوف الموجودين في القائمة الأولى فقط
  
  // طباعة النتائج بالتنسيق المطلوب
  print("Event: $eventName");
  print("First invitation list: $firstSet");
  print("Second invitation list: $secondSet");
  // أضف بيانات الإخراج المتبقية هنا
}

جميع دروس Logic & Flow