Menu
CoddyTech

Typowe wzorce tablic 2D

Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 17 z 78.

Kilka sposobów poruszania się po siatce pojawia się raz za razem. W tych przykładach użyto kwadratowej siatki o rozmiarze n:

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

Przekątne. Na głównej przekątnej indeks wiersza jest równy indeksowi kolumny: grid[i][i]. Na przekątnej przeciwległej, biegnącej od prawego górnego rogu do lewego dolnego, kolumna ma indeks n - 1 - i. Wystarczy jedna pętla:

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

Wiersze, kolumny i krawędzie. Ustal jeden indeks i wykonaj pętlę po drugim. Górny wiersz to grid[0], a dolny wiersz to grid[n - 1]. W kolumnie c pozostaje stałe, podczas gdy wiersz się zmienia:

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

Sąsiedzi. W grach siatkowych często sprawdzasz komórki wokół danej pozycji: powyżej, poniżej, po lewej i po prawej. Zapisz te cztery kroki jako tablicę par [row, column] i pomiń kroki wychodzące poza siatkę:

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

Komórka grid[0][1] znajduje się na górnej krawędzi, więc ma 3 sąsiadów: 5, 1 i 3.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję o nazwie print_patterns z jednym parametrem, grid: kwadratową tablicą 2D liczb całkowitych (zadeklaruj ją jako grid: Array). Wypisuje sześć wierszy, a wartości oddziela pojedynczymi spacjami:

  1. Main diagonal: i komórki, w których indeks wiersza jest równy indeksowi kolumny
  2. Anti-diagonal: i komórki od prawego górnego do lewego dolnego rogu
  3. Top row: i pierwszy wiersz
  4. Bottom row: i ostatni wiersz
  5. Left column: i pierwsza kolumna, od góry do dołu
  6. Right column: i ostatnia kolumna, od góry do dołu

Dla tablicy [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] wynikiem jest:

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

Testy same wywołują print_patterns(). Nie wywołuj jej i niczego nie zwracaj.

Spróbuj swoich sił

func print_patterns(grid: Array):
	# Wpisz kod tutaj
	pass
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator GDScript online