Array frastagliati
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 16 di 78.
Le righe di un array 2D non devono avere tutte la stessa lunghezza. Un array 2D le cui righe hanno lunghezze diverse è un array frastagliato. Qui ogni riga contiene i punteggi di un giocatore e i giocatori hanno disputato un numero diverso di round:
var scores := [
[90, 85, 70],
[60],
[75, 80]
]
print(scores[0].size()) # 3
print(scores[1].size()) # 1In un array irregolare, scores[0].size() non è la lunghezza di ogni riga. Scorri le colonne della riga corrente con scores[r].size():
for r in range(scores.size()):
var total := 0
for c in range(scores[r].size()):
total += scores[r][c]
print("Player ", r + 1, ": ", total)Player 1: 245
Player 2: 60
Player 3: 155Un ciclo che usa sempre la lunghezza della prima riga supera la fine delle righe più corte: scores[1][2] è un errore, perché la riga 1 ha solo l'indice 0. for value in row si adatta sempre alla riga che percorre.
Crei un array frastagliato come una griglia, con una lunghezza diversa per ogni riga. In questo triangolo, la riga r ha r + 1 celle:
var triangle := []
for r in range(4):
var row := []
for c in range(r + 1):
row.append("*")
triangle.append(row)
for row in triangle:
print("".join(row))*
**
***
****Una riga può anche essere vuota: [[1, 2], [], [3]] è un array irregolare con tre righe.
Sfida
FacileScrivi una funzione chiamata make_triangle con un parametro int n. Restituisce un array irregolare di n righe:
- La riga 1 ha 1 cella, la riga 2 ha 2 celle e così via, fino alla riga
n, che hancelle. - Numerando righe e colonne a partire da 1, ogni cella contiene il numero della riga moltiplicato per il numero della colonna. La cella nella riga 3, colonna 2 contiene
3 * 2 = 6.
Per esempio, make_triangle(3) restituisce:
[[1], [2, 4], [3, 6, 9]]I test chiamano direttamente make_triangle() e controllano l'array restituito. Non chiamarla e non stampare nulla.
Provalo tu
func make_triangle(n: int):
# 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