Menu
CoddyTech

Gängige Muster für 2D-Arrays

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

Einige Möglichkeiten, ein Raster zu durchlaufen, kommen immer wieder vor. Diese Beispiele verwenden ein quadratisches Raster der Größe n:

var grid := [
	[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]
]
var n := grid.size()

Diagonalen. Auf der Hauptdiagonalen entspricht der Zeilenindex dem Spaltenindex: grid[i][i]. Auf der Gegendiagonalen, von der oberen rechten Ecke zur unteren linken, ist der Spaltenindex n - 1 - i. Eine Schleife reicht aus:

for i in range(n):
	print(grid[i][i], " ", grid[i][n - 1 - i])
1 3
5 5
9 7

Zeilen, Spalten und Ränder. Halte einen Index fest und durchlaufe den anderen. Die oberste Zeile ist grid[0] und die unterste Zeile ist grid[n - 1]. Bei einer Spalte bleibt c fest, während sich die Zeile ändert:

var left_total := 0
for r in range(n):
	left_total += grid[r][0] # linke Spalte: 1 + 4 + 7
print(left_total) # 12

Nachbarn. In Rasterspielen betrachtet man oft die Zellen um eine Position herum: oben, unten, links und rechts. Speichere die vier Schritte als Array aus [row, column]-Paaren und überspringe die Schritte, die aus dem Raster herausführen:

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

Die Zelle grid[0][1] liegt am oberen Rand und hat daher 3 Nachbarn: 5, 1 und 3.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion namens print_patterns mit einem Parameter, grid: ein quadratisches 2D-Array aus Ganzzahlen (deklariere es als grid: Array). Sie gibt sechs Zeilen aus, wobei die Werte durch einzelne Leerzeichen getrennt sind:

  1. Main diagonal: und die Zellen, bei denen der Zeilenindex dem Spaltenindex entspricht
  2. Anti-diagonal: und die Zellen von der oberen rechten bis zur unteren linken Ecke
  3. Top row: und die erste Zeile
  4. Bottom row: und die letzte Zeile
  5. Left column: und die erste Spalte, von oben nach unten
  6. Right column: und die letzte Spalte, von oben nach unten

Für das Raster [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] lautet die Ausgabe:

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

Die Tests rufen print_patterns() selbst auf. Rufe die Funktion nicht auf und gib nichts zurück.

Probier es selbst

func print_patterns(grid: Array):
	# 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