יסודות המערכים הדו־ממדיים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 10 מתוך 56.
מערך דו־ממדי הוא מערך שהאיברים שלו הם בעצמם מערכים. כל מערך פנימי מייצג שורה ברשת.
cinema = [
[true, true], # שורה 0
[false, true] # שורה 1
]הדבר מייצג רשת בגודל 2×2, שתי שורות, שבכל אחת מהן שתי עמודות.
כדי ליצור רשת של מספרים שלמים בגודל 3×4:
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]אפשר לבנות רשת מלאה בערך ברירת מחדל באמצעות Array.new פעמיים, פעם אחת עבור השורות ופעם אחת עבור העמודות:
grid = Array.new(3) { Array.new(4, 0) }
# 3 שורות, 4 עמודות, כולן אפסיםצורת הבלוק ({ Array.new(4, 0) }) חשובה; היא יוצרת מערך פנימי חדש לכל שורה. בלעדיה, כל שורה הייתה מצביעה על אותו מערך.
אתגר
קלקראו שני מספרים שלמים (שתי שורות קלט): rows ו־cols. בנו מערך דו־ממדי בגודל הזה, שבו כל תא שווה ל־row * cols + col + 1 (כך שהשורה הראשונה נספרת החל מ־1, והרשת מתמלאת לפי סדר הקריאה).
הדפיסו את הרשת באמצעות inspect על המערך החיצוני, בשורה אחת.
עבור הקלט 2 ואז 3, הפלט הוא:
[[1, 2, 3], [4, 5, 6]]נסו בעצמכם
rows = gets.to_i
cols = gets.to_i
# TODO: בנו את הרשת והדפיסו אותה באמצעות inspect
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין