Menu
Coddy logo textTech

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

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

פעולות מסוימות על מערכים דו־ממדיים מופיעות לעיתים קרובות כל כך, שכדאי להכיר אותן בשמן.

חברו כל תא: שטחו את הרשת למערך חד־ממדי וקראו ל־sum:

grid = [[1, 2], [3, 4]]
puts grid.flatten.sum  # 10

האלכסון הראשי: התאים שבהם אינדקס השורה שווה לאינדקס העמודה (matrix[i][i]):

matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

(0...matrix.length).each do |i|
  puts matrix[i][i]
end
# 1, 5, 9

טרנספוזיציה: Ruby כוללת את האפשרות הזו מובנית. שורות הופכות לעמודות ולהפך:

matrix.transpose
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

היכרות עם השמות האלה חוסכת ממך לכתוב מחדש את אותן לולאות מקוננות.

challenge icon

אתגר

קל

הmatrix הריבועית נתונה (n × n). הדפיסו שלוש שורות, כולן נגזרות מהתבניות בתיאוריה:

  1. Anti-diagonal sum: <n>, סכום התאים שעבורם r + c == matrix.length - 1
  2. Column sums: [...], סכום כל עמודה. רמז: תחילה בצעו טרנספוזיציה, אחר כך מפו כל שורה לסכום שלה, ואז inspect
  3. Symmetric: true או false: האם המטריצה שווה לטרנספוזיציה של עצמה?

עבור מטריצת ברירת המחדל, הפלט הוא:

Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: false

נסו בעצמכם

matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

# TODO: סכום האלכסון המשני, סכומי העמודות באמצעות שחלוף, בדיקת סימטריה
quiz iconבחנו את עצמכם

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

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

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