תבניות נפוצות במערכים דו־ממדיים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 17 מתוך 78.
כמה דרכים לעבור דרך רשת חוזרות שוב ושוב. הדוגמאות האלה משתמשות ברשת ריבועית בגודל n:
var grid := [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
var n := grid.size()אלכסונים. באלכסון הראשי, אינדקס השורה שווה לאינדקס העמודה: grid[i][i]. באלכסון המשני, מהפינה הימנית העליונה לפינה השמאלית התחתונה, אינדקס העמודה הוא n - 1 - i. לולאה אחת מספיקה:
for i in range(n):
print(grid[i][i], " ", grid[i][n - 1 - i])1 3
5 5
9 7שורות, עמודות וגבולות. מקבעים אינדקס אחד ועוברים בלולאה על השני. השורה העליונה היא grid[0] והשורה התחתונה היא grid[n - 1]. בעמודה משאירים את c קבוע ומשנים את השורה:
var left_total := 0
for r in range(n):
left_total += grid[r][0] # העמודה השמאלית: 1 + 4 + 7
print(left_total) # 12שכנים. במשחקי רשת מסתכלים לעיתים קרובות על התאים שסביב מיקום: למעלה, למטה, שמאלה וימינה. שמור את ארבעת הצעדים כמערך של זוגות [row, column], ודלג על הצעדים שיוצאים מגבולות הרשת:
var r := 0
var c := 1
for step in [[-1, 0], [1, 0], [0, -1], [0, 1]]:
var nr: int = r + step[0]
var nc: int = c + step[1]
if nr >= 0 and nr < n and nc >= 0 and nc < n:
print(grid[nr][nc])התא grid[0][1] נמצא בגבול העליון, ולכן יש לו 3 שכנים: 5, 1 ו-3.
אתגר
קלכתבו פונקציה בשם print_patterns עם פרמטר אחד, grid: מערך דו־ממדי ריבועי של מספרים שלמים (הכריזו עליו בתור grid: Array). היא מדפיסה שש שורות, כשהערכים מופרדים ברווח יחיד:
Main diagonal:והתאים שבהם אינדקס השורה שווה לאינדקס העמודהAnti-diagonal:והתאים מהפינה הימנית העליונה לפינה השמאלית התחתונהTop row:והשורה הראשונהBottom row:והשורה האחרונהLeft column:והעמודה הראשונה, מלמעלה למטהRight column:והעמודה האחרונה, מלמעלה למטה
עבור המערך [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]], הפלט הוא:
Main diagonal: 1 6 11 16
Anti-diagonal: 4 7 10 13
Top row: 1 2 3 4
Bottom row: 13 14 15 16
Left column: 1 5 9 13
Right column: 4 8 12 16הבדיקות קוראות ל־print_patterns() בעצמן. אל תקראו לה ואל תחזירו שום דבר.
נסו בעצמכם
func print_patterns(grid: Array):
# כתבו כאן קוד
pass
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמיד3מערכים רב־ממדיים
יסודות המערכים הדו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום – מערכים דו־ממדייםמערכים משונניםתבניות נפוצות במערכים דו־ממדייםסיכום – לוח משחקתרגלו בעצמכם: קומפיילר GDScript אונליין