Menu
CoddyTech

Gezackte Arrays

Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 16 von 78.

Die Zeilen eines 2D-Arrays müssen nicht dieselbe Länge haben. Ein 2D-Array, dessen Zeilen unterschiedliche Längen haben, ist ein gezacktes Array. Hier enthält jede Zeile die Punktzahlen eines Spielers, und die Spieler haben unterschiedlich viele Runden gespielt:

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

In einem gezackten Array ist scores[0].size() nicht die Länge jeder Zeile. Durchlaufe die Spalten der aktuellen Zeile mit 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

Eine Schleife, die immer die Länge der ersten Zeile verwendet, greift über das Ende der kürzeren Zeilen hinaus: scores[1][2] ist ein Fehler, weil Zeile 1 nur den Index 0 hat. for value in row passt immer zu der Zeile, durch die sie läuft.

Du erstellst ein gezacktes Array wie ein Raster, wobei jede Zeile eine andere Länge hat. In diesem Dreieck hat Zeile r r + 1 Zellen:

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))
*
**
***
****

Eine Zeile kann sogar leer sein: [[1, 2], [], [3]] ist ein gültiges gezacktes Array mit drei Zeilen.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion namens make_triangle mit einem int-Parameter n. Sie gibt ein gezacktes Array mit n Zeilen zurück:

  • Zeile 1 hat 1 Zelle, Zeile 2 hat 2 Zellen und so weiter, bis Zeile n, die n Zellen hat.
  • Wenn du die Zeilen und Spalten ab 1 zählst, enthält jede Zelle das Produkt aus ihrer Zeilennummer und ihrer Spaltennummer. Die Zelle in Zeile 3, Spalte 2 enthält 3 * 2 = 6.

Zum Beispiel gibt make_triangle(3) Folgendes zurück:

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

Die Tests rufen make_triangle() selbst auf und überprüfen das zurückgegebene Array. Rufe die Funktion nicht auf und gib nichts aus.

Probier es selbst

func make_triangle(n: int):
	# Schreibe hier den Code
	pass
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablaufsteuerung

Übe selbstständig: Online-GDScript-Compiler