גישה לאיברים במערך דו־ממדי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 11 מתוך 56.
כדי לקרוא תא יחיד במערך דו־ממדי או לעדכן אותו, שרשר שתי גישות לאינדקס: הראשונה בוחרת את השורה, והשנייה בוחרת את העמודה.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (שמאל למעלה)
puts matrix[1][2] # 60 (שורה 1, עמודה 2)
puts matrix[2][0] # 70 (שמאל למטה)עדכון של תא משתמש באותו תחביר בצד שמאל:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]שתי שאילתות שימושיות לגבי הממדים:
puts matrix.length # 3 (מספר השורות)
puts matrix[0].length # 3 (מספר העמודות בשורה 0)האינדקסים מתחילים ב-0 ועולים עד length - 1. חריגה מעבר לסוף מחזירה nil במקום להעלות שגיאה.
אתגר
מתחיליםהמערך הדו־ממדי matrix נתון. קראו שלושה מספרים שלמים (שלוש שורות): r1, c1, ואז v. לאחר מכן:
- הדפיסו את הערך שב־
matrix[r1][c1] - הגדירו את
matrix[r1][c1] = v - הדפיסו את כל
matrixהמעודכן באמצעותinspect
עבור הקלט 1 / 2 / 99, הפלט הוא:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]נסו בעצמכם
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: הדפס את matrix[r1][c1], הקצה את v, ואז הדפס את המטריצה כולה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין