Menu
CoddyTech

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()) # 1

In 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: 155

Un 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.

challenge icon

Sfida

Facile

Scrivi 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 ha n celle.
  • 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
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