Menu
CoddyTech

Schemi comuni con gli array 2D

Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 17 di 78.

Alcuni modi di attraversare una griglia ricorrono spesso. Questi esempi usano una griglia quadrata di dimensione n:

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

Diagonali. Sulla diagonale principale, l’indice di riga è uguale all’indice di colonna: grid[i][i]. Sulla diagonale secondaria, dall’angolo in alto a destra a quello in basso a sinistra, la colonna è n - 1 - i. Basta un solo ciclo:

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

Righe, colonne e bordi. Fissa un indice e fai un ciclo sull’altro. La riga superiore è grid[0] e quella inferiore è grid[n - 1]. In una colonna, c rimane fisso mentre la riga cambia:

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

Vicini. Nei giochi su griglia spesso osservi le celle intorno a una posizione: sopra, sotto, a sinistra e a destra. Memorizza i quattro spostamenti come coppie [row, column] in un array e salta gli spostamenti che escono dalla griglia:

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

La cella grid[0][1] si trova sul bordo superiore, quindi ha 3 vicini: 5, 1 e 3.

challenge icon

Sfida

Facile

Scrivi una funzione chiamata print_patterns con un parametro, grid: un array 2D quadrato di interi (dichiaralo come grid: Array). Stampa sei righe, con i valori separati da singoli spazi:

  1. Main diagonal: e le celle in cui l’indice della riga è uguale all’indice della colonna
  2. Anti-diagonal: e le celle dall’angolo in alto a destra a quello in basso a sinistra
  3. Top row: e la prima riga
  4. Bottom row: e l’ultima riga
  5. Left column: e la prima colonna, dall’alto verso il basso
  6. Right column: e l’ultima colonna, dall’alto verso il basso

Per la griglia [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]], l’output è:

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

I test chiamano print_patterns() autonomamente. Non chiamarla e non restituire nulla.

Provalo tu

func print_patterns(grid: Array):
	# Scrivi il codice qui
	pass
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore GDScript online