Menu
CoddyTech

מערכים משוננים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 16 מתוך 78.

השורות של מערך דו־ממדי אינן צריכות להיות באותו אורך. מערך דו־ממדי שהשורות שלו באורכים שונים נקרא מערך משונן. כאן כל שורה מכילה את הניקוד של שחקן אחד, והשחקנים שיחקו מספר שונה של סבבים:

var scores := [
	[90, 85, 70],
	[60],
	[75, 80]
]
print(scores[0].size()) # 3
print(scores[1].size()) # 1

במערך משונן, scores[0].size() אינו האורך של כל שורה. עברו בלולאה על העמודות בשורה הנוכחית באמצעות scores[r].size():

for r in range(scores.size()):
	var total := 0
	for c in range(scores[r].size()):
		total += scores[r][c]
	print("Player ", r + 1, ": ", total)
Player 1: 245
Player 2: 60
Player 3: 155

לולאה שמשתמשת תמיד באורך של השורה הראשונה קוראת מעבר לסוף השורות הקצרות יותר: scores[1][2] היא שגיאה, כי בשורה 1 יש רק את האינדקס 0. for value in row תמיד מתאימה לשורה שהיא עוברת עליה.

בונים מערך משונן כמו רשת, כאשר לכל שורה אורך שונה. במשולש הזה, בשורה r יש r + 1 תאים:

var triangle := []
for r in range(4):
	var row := []
	for c in range(r + 1):
		row.append("*")
	triangle.append(row)
for row in triangle:
	print("".join(row))
*
**
***
****

שורה יכולה אפילו להיות ריקה: [[1, 2], [], [3]] הוא מערך משונן תקין עם שלוש שורות.

challenge icon

אתגר

קל

כתבו פונקציה בשם make_triangle עם פרמטר אחד מסוג int בשם n. היא מחזירה מערך מדורג עם n שורות:

  • בשורה 1 יש תא אחד, בשורה 2 יש 2 תאים, וכן הלאה, עד לשורה n, שבה יש n תאים.
  • אם סופרים את השורות והעמודות החל מ־1, הערך בכל תא הוא מספר השורה כפול מספר העמודה שלו. בתא שבשורה 3, עמודה 2, נמצא 3 * 2 = 6.

לדוגמה, make_triangle(3) מחזירה:

[[1], [2, 4], [3, 6, 9]]

הבדיקות קוראות בעצמן ל־make_triangle() ובודקות את המערך שהוחזר. אל תקראו לה ואל תדפיסו דבר.

נסו בעצמכם

func make_triangle(n: int):
	# כתבו כאן קוד
	pass
quiz iconבחנו את עצמכם

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

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

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