Menu
CoddyTech

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

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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.

challenge icon

אתגר

קל

כתבו פונקציה בשם print_patterns עם פרמטר אחד, grid: מערך דו־ממדי ריבועי של מספרים שלמים (הכריזו עליו בתור grid: Array). היא מדפיסה שש שורות, כשהערכים מופרדים ברווח יחיד:

  1. Main diagonal: והתאים שבהם אינדקס השורה שווה לאינדקס העמודה
  2. Anti-diagonal: והתאים מהפינה הימנית העליונה לפינה השמאלית התחתונה
  3. Top row: והשורה הראשונה
  4. Bottom row: והשורה האחרונה
  5. Left column: והעמודה הראשונה, מלמעלה למטה
  6. 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
quiz iconבחנו את עצמכם

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

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

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