Menu
Coddy logo textTech

סיכום – רשימת אורחים ייחודית

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 25 מתוך 65.

challenge icon

אתגר

קל

צרו תוכנית לניהול מערכת לתכנון אירועים באמצעות ניתוח רשימות אורחים משני מקורות הזמנה שונים. התוכנית שלכם צריכה:

  1. לקרוא קלט מסוג מחרוזת המייצג את שם האירוע
  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() כדי למצוא אורחים שמופיעים רק ברשימה הראשונה. תחילה המירו את רשימות הקלט לקבוצות כדי לטפל בכפילויות בתוך כל אחת מהרשימות, ולאחר מכן בצעו את פעולות הקבוצה כדי לנתח את התפלגות האורחים.

נסו בעצמכם

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");
  // הוסיפו כאן את שאר הוראות הפלט
}

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין