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 7Zeilen, 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) # 12Nachbarn. 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.
Aufgabe
EinfachSchreibe 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:
Main diagonal:und die Zellen, bei denen der Zeilenindex dem Spaltenindex entsprichtAnti-diagonal:und die Zellen von der oberen rechten bis zur unteren linken EckeTop row:und die erste ZeileBottom row:und die letzte ZeileLeft column:und die erste Spalte, von oben nach untenRight 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 16Die 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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler