Menu
Coddy logo textTech

תבניות נפוצות במערכים דו־ממדיים

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

תבניות מסוימות מופיעות לעיתים קרובות בעבודה עם מערכים דו־ממדיים. זיהוי התבניות האלה יכול לעזור לך לפתור בעיות ביעילות רבה יותר. הנה כמה תבניות נפוצות:

מעבר באלכסון

גישה לאיברים שבהם אינדקס השורה שווה לאינדקס העמודה (matrix[i][i]) נותנת לך את האלכסון הראשי. באלכסון המשני, סכום אינדקסי השורה והעמודה שווה לגודל המערך פחות 1 (matrix[i][size - 1 - i]).

לדוגמה:

1  2  3
4  5  6
7  8  9

עוברים לאורך האלכסון הראשי (matrix[i][i]): 1, 5, 9
עוברים לאורך האלכסון המשני (matrix[i][size - 1 - i]): 3, 5, 7

מעבר על הגבול

כדי לעבור על איברי הגבול, משאירים אינדקס אחד קבוע (0 או size - 1) בזמן שמתקדמים על פני האינדקס האחר.

כדי לגשת לגבול העליון, עוברים על העמודות כשאינדקס השורה קבוע על 0.

לדוגמה:

1  2  3  4
5  6  7  8
9 10 11 12

איברי הגבול: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (הכול חוץ מ־6 ו־7)

challenge icon

אתגר

קל

צרו פונקציה בשם printPatterns שמקבלת כקלט מערך דו-ממדי ריבועי של מספרים שלמים (matrix) ומדפיסה את הדפוסים הבאים:

  1. אלכסון ראשי: הדפיסו את כל האיברים שבהם אינדקס השורה שווה לאינדקס העמודה.
  2. אלכסון משני: הדפיסו את כל האיברים שבהם סכום אינדקסי השורה והעמודה שווה לגודל המטריצה פחות 1.
  3. גבולות: הדפיסו את האיברים בגבול העליון, התחתון, השמאלי והימני של המטריצה.

הפלט אמור להיראות כך:

Main Diagonal: 1 6 11 16 
Anti-Diagonal: 4 7 10 13 
Top Border: 1 2 3 4 
Bottom Border: 13 14 15 16 
Left Border: 1 5 9 13 
Right Border: 4 8 12 16

נסו בעצמכם

function printPatterns(matrix) {
    let mainDiagonal = []
    // TODO: לממש
    console.log("Main Diagonal:", mainDiagonal.join(" "));
    
    let antiDiagonal = [];
    // TODO: לממש
    console.log("Anti-Diagonal:", antiDiagonal.join(" "));
    
    let topBorder = [];
    // TODO: לממש
    console.log("Top Border:", topBorder.join(" "));
    
    let bottomBorder = [];
    // TODO: לממש
    console.log("Bottom Border:", bottomBorder.join(" "));
    
    let leftBorder = [];
    // TODO: לממש
    console.log("Left Border:", leftBorder.join(" "));
    
    let rightBorder = [];
    // TODO: לממש
    console.log("Right Border:", rightBorder.join(" "));
}
// אין לכתוב דבר מחוץ לפונקציה
quiz iconבחנו את עצמכם

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

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

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