תבניות נפוצות במערכים דו־ממדיים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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]]היכרות עם השמות האלה חוסכת ממך לכתוב מחדש את אותן לולאות מקוננות.
אתגר
קלהmatrix הריבועית נתונה (n × n). הדפיסו שלוש שורות, כולן נגזרות מהתבניות בתיאוריה:
Anti-diagonal sum: <n>, סכום התאים שעבורםr + c == matrix.length - 1Column sums: [...], סכום כל עמודה. רמז: תחילה בצעו טרנספוזיציה, אחר כך מפו כל שורה לסכום שלה, ואזinspectSymmetric: trueאוfalse: האם המטריצה שווה לטרנספוזיציה של עצמה?
עבור מטריצת ברירת המחדל, הפלט הוא:
Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: falseנסו בעצמכם
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# TODO: סכום האלכסון המשני, סכומי העמודות באמצעות שחלוף, בדיקת סימטריה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
סקירה של מתודות למחרוזותאינטרפולציה של מחרוזותמעבר על מחרוזותפיצול וחיבורסיכום – שוזר המחרוזות4בלוקים, Procs ו־Lambdas
מהו בלוק?do..end לעומת סוגריים מסולסליםמילת המפתח yieldפרמטרים של בלוקProcs ו־Lambdasסיכום – איטרטור מותאם אישית7Hashes חלק 2
Hash.new עם ערכי ברירת מחדלמעבר על HashesHashes מקונניםמיזוג ושינויסיכום - מונה תדירויות10פרויקט - רשומות תלמידים
סקירת הפרויקטהוספת תלמיד5עוצמת Enumerable
Select ו־Rejectשרשור MapReduce / Injectcount, all?, any?, none?group_by ו־partitionsort_by, min_by, max_byסיכום - צינור נתונים3מערכים דו־ממדיים
יסודות המערכים הדו־ממדייםגישה לאיברים במערך דו־ממדימעבר על מערכים דו־ממדייםתבניות נפוצות במערכים דו־ממדייםסיכום – פעולות על מטריצותתרגלו בעצמכם: קומפיילר Ruby אונליין