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 7Righe, 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) # 12Vicini. 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.
Sfida
FacileScrivi 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:
Main diagonal:e le celle in cui l’indice della riga è uguale all’indice della colonnaAnti-diagonal:e le celle dall’angolo in alto a destra a quello in basso a sinistraTop row:e la prima rigaBottom row:e l’ultima rigaLeft column:e la prima colonna, dall’alto verso il bassoRight 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 16I test chiamano print_patterns() autonomamente. Non chiamarla e non restituire nulla.
Provalo tu
func print_patterns(grid: Array):
# Scrivi il codice qui
pass
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online