Menu
Coddy logo textTech

איחוד קבוצות

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

כשיש לך שתי קבוצות Set נפרדות, אפשר לאחד אותן לקבוצה אחת שמכילה את כל האיברים הייחודיים של שתיהן באמצעות המתודה union(). הפעולה הזאת יוצרת קבוצה חדשה שכוללת כל איבר שמופיע באחת משתי הקבוצות המקוריות.

השיטה union() מטפלת בכפילויות באופן אוטומטי. אם אותו איבר קיים בשתי הקבוצות, הוא יופיע פעם אחת בלבד בקבוצת האיחוד שתתקבל, וכך נשמרת התכונה הבסיסית שלפיה קבוצות מכילות ערכים ייחודיים בלבד.

Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};

Set<String> allSkills = frontendSkills.union(backendSkills);
print(allSkills);  // {HTML, CSS, JavaScript, Python, SQL}

שימו לב איך 'JavaScript' מופיע בשתי הקבוצות המקוריות, אבל רק פעם אחת בתוצאת האיחוד. כך union() מתאימה במיוחד לשילוב אוספים קשורים תוך הבטחה שאין כפילויות, למשל מיזוג מערכי מיומנויות, שילוב הרשאות משתמשים או איחוד נתונים ממקורות מרובים.

כדי למצוא איברים שמופיעים בשתי הקבוצות, השתמשו בשיטה intersection(). היא מחזירה קבוצה חדשה שמכילה רק את האיברים המשותפים:

Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills);  // {JavaScript}

ברגע שיש לך קבוצת איברים חופפים, אפשר להמיר אותה למחרוזת קריאה באמצעות המתודה join(). הדבר פועל באותו אופן כמו עם List. היא מחברת את כל האיברים למחרוזת אחת עם מפריד שתספק:

Set<String> overlap = frontendSkills.intersection(backendSkills);
String result = overlap.isEmpty ? 'None' : overlap.join(', ');
print(result);  // JavaScript

ביחד, union(), intersection() ו-join() מספקות לך כלים רבי עוצמה להשוואה ולהצגה של נתוני קבוצות, למשל, לשילוב מערכי הכישורים של צוותים ולזיהוי הכישורים שכבר משותפים להם.

challenge icon

אתגר

קל

צרו תוכנית שמנהלת מערכת ליצירת קשרים מקצועיים באמצעות שילוב קבוצות מיומנויות של חברי צוות שונים, כדי ליצור פרופיל מקיף של מיומנויות לפרויקט. התוכנית שלכם צריכה:

  1. לקרוא קלט מסוג מחרוזת שמייצג את שם הפרויקט
  2. לקרוא כמה קלטים מסוג מחרוזת שמייצגים את המיומנויות של חבר הצוות הראשון (הקלט יסתיים כשתקבלו "member1_done")
  3. לקרוא כמה קלטים מסוג מחרוזת שמייצגים את המיומנויות של חבר הצוות השני (הקלט יסתיים כשתקבלו "member2_done")
  4. ליצור שתי קבוצות נפרדות לאחסון המיומנויות של כל אחד מחברי הצוות
  5. להשתמש בשיטה union() כדי לשלב את שתי קבוצות המיומנויות לפרופיל מקיף של מיומנויות לפרויקט
  6. להדפיס את תוצאות שילוב המיומנויות בדיוק בפורמט שמוצג למטה

לדוגמה, אם שם הפרויקט הוא "Web Development Project", המיומנויות של החבר הראשון הן "HTML", "CSS", "JavaScript", "React", והמיומנויות של החבר השני הן "JavaScript", "Node.js", "MongoDB", "React", התוכנית שלכם צריכה להציג:

Project: Web Development Project
Team Member 1 skills: {HTML, CSS, JavaScript, React}
Team Member 2 skills: {JavaScript, Node.js, MongoDB, React}
Combined project skills: {HTML, CSS, JavaScript, React, Node.js, MongoDB}
Total unique skills available: 6
Overlapping skills: JavaScript, React
Status: Project skill profile created successfully

אם שם הפרויקט הוא "Mobile App Development", המיומנויות של החבר הראשון הן "Dart", "Flutter", "Firebase", והמיומנויות של החבר השני הן "Swift", "iOS", "Xcode", התוכנית שלכם צריכה להציג:

Project: Mobile App Development
Team Member 1 skills: {Dart, Flutter, Firebase}
Team Member 2 skills: {Swift, iOS, Xcode}
Combined project skills: {Dart, Flutter, Firebase, Swift, iOS, Xcode}
Total unique skills available: 6
Overlapping skills: None
Status: Project skill profile created successfully

אם שם הפרויקט הוא "Data Science Project", המיומנויות של החבר הראשון הן "Python", "Pandas", "NumPy", "SQL", והמיומנויות של החבר השני הן "Python", "SQL", "Tableau", "Statistics", התוכנית שלכם צריכה להציג:

Project: Data Science Project
Team Member 1 skills: {Python, Pandas, NumPy, SQL}
Team Member 2 skills: {Python, SQL, Tableau, Statistics}
Combined project skills: {Python, Pandas, NumPy, SQL, Tableau, Statistics}
Total unique skills available: 6
Overlapping skills: Python, SQL
Status: Project skill profile created successfully

על התוכנית שלכם להשתמש בשיטה union() כדי לשלב את שתי קבוצות המיומנויות ולהדגים כיצד היא מטפלת בכפילויות באופן אוטומטי. הציגו תחילה את קבוצות המיומנויות הנפרדות, ולאחר מכן את התוצאה המשולבת. זהו מיומנויות חופפות באמצעות מציאת מיומנויות שמופיעות בשתי הקבוצות המקוריות. אם אין מיומנויות חופפות, הציגו "None" בשורת המיומנויות החופפות.

REQUIRED OUTPUT FORMAT: [Your translated content here]

נסו בעצמכם

import 'dart:io';

void main() {
  // קרא את שם הפרויקט
  String? projectName = stdin.readLineSync();
  
  // קרא את המיומנויות של חבר הצוות הראשון
  Set<String> member1Skills = <String>{};
  String? skill;
  while ((skill = stdin.readLineSync()) != "member1_done") {
    if (skill != null) {
      member1Skills.add(skill);
    }
  }
  
  // קרא את המיומנויות של חבר הצוות השני
  Set<String> member2Skills = <String>{};
  while ((skill = stdin.readLineSync()) != "member2_done") {
    if (skill != null) {
      member2Skills.add(skill);
    }
  }
  
  // TODO: כתוב את הקוד שלך למטה
  // השתמש במתודה union() כדי לאחד את שתי קבוצות המיומנויות
  // מצא מיומנויות משותפות לשתי הקבוצות
  // חשב את המספר הכולל של המיומנויות הייחודיות
  
  // הצג את התוצאות בפורמט הנדרש
  print("Project: $projectName");
  print("Team Member 1 skills: $member1Skills");
  print("Team Member 2 skills: $member2Skills");
  // הדפס את המיומנויות המאוחדות, המספר הכולל, המיומנויות המשותפות והסטטוס
}
quiz iconבחנו את עצמכם

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

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

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