Menu
Coddy logo textTech

תת-קבוצות ועל-קבוצות

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

קבוצה A היא תת־קבוצה של קבוצה B אם כל איבר של A הוא גם איבר של B. לעומת זאת, B היא קבוצת־על של A אם היא מכילה את כל האיברים של A.

שתי קבוצות שוות אם הן מכילות בדיוק את אותם איברים. לדוגמה, בואו ניצור כמה בדיקות:

const setA = new Set([1, 2, 3]);
const setB = new Set([1, 2, 3, 4, 5]);
const setC = new Set([1, 2, 3]);
const setD = new Set([6, 7, 8]);

פונקציה לבדיקה אם setA היא תת־קבוצה של setB:

function isSubset(setA, setB) {
  return [...setA].every(element => setB.has(element));
}

פונקציה לבדיקה אם setA היא קבוצת־על של setB:

function isSuperset(setA, setB) {
  return isSubset(setB, setA);
}

פונקציה לבדיקה אם שתי קבוצות שוות:

function areEqual(setA, setB) {
  return setA.size === setB.size && isSubset(setA, setB);
}

בדיקת יחס הכלה:

// האם A היא תת־קבוצה של B? 
isSubset(setA, setB) // true
// האם B היא תת־קבוצה של A? 
isSubset(setB, setA) // false
// האם D היא תת־קבוצה של B? 
isSubset(setD, setB) // false

בדיקת קשר של קבוצת־על:

// האם B היא קבוצת־על של A?
isSuperset(setB, setA) // true
// האם A היא קבוצת־על של B?
isSuperset(setA, setB) // false

בדיקת שוויון:

// האם A שווה ל-C?
areEqual(setA, setC) // true
// האם A שווה ל-B?
areEqual(setA, setB) // false
// האם A שווה ל-D?
areEqual(setA, setD) // false
challenge icon

אתגר

קל

צרו פונקציה בשם analyzeSetRelations שמקבלת שני מערכים כפרמטרים: arr1 ו-arr2. הפונקציה צריכה להמיר את המערכים לקבוצות ולהחזיר אובייקט עם המאפיינים הבאים:

  • isSubset: ערך בוליאני המציין אם set1 היא תת-קבוצה של set2
  • isSuperset: ערך בוליאני המציין אם set1 היא קבוצת-על של set2
  • isEqual: ערך בוליאני המציין אם ל-set1 ול-set2 יש בדיוק אותם איברים

נסו בעצמכם

function analyzeSetRelations(arr1, arr2) {
    let set1 = new Set(arr1);
    let set2 = new Set(arr2);

    // השתמשו ב-.every() וב-.has() כדי לבדוק את היחסים בין הקבוצות
    let isSubset = false;   // TODO: בדקו אם כל איבר ב-set1 קיים ב-set2
    let isSuperset = false; // TODO: בדקו אם כל איבר ב-set2 קיים ב-set1
    let isEqual = false;    // TODO: בדקו אם לשתי הקבוצות יש אותו מספר איברים ואם isSubset הוא true

    return {
        isSubset: isSubset,
        isSuperset: isSuperset,
        isEqual: isEqual
    };
}
quiz iconבחנו את עצמכם

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

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

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