Menu
CoddyTech

Arrays irregulares

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 16 de 78.

As linhas de um array 2D não precisam ter o mesmo comprimento. Um array 2D cujas linhas têm comprimentos diferentes é um array irregular. Aqui, cada linha contém as pontuações de um jogador, e os jogadores jogaram um número diferente de rodadas:

var scores := [
	[90, 85, 70],
	[60],
	[75, 80]
]
print(scores[0].size()) # 3
print(scores[1].size()) # 1

Em um array irregular, scores[0].size() não é o comprimento de todas as linhas. Percorra as colunas da linha atual com 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

Um loop que sempre usa o comprimento da primeira linha lê além do fim das linhas mais curtas: scores[1][2] é um erro, porque a linha 1 tem apenas o índice 0. for value in row sempre se ajusta à linha pela qual percorre.

Você cria um array irregular como uma grade, com um comprimento diferente para cada linha. Neste triângulo, a linha r tem r + 1 células:

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

Uma linha pode até estar vazia: [[1, 2], [], [3]] é um array irregular válido com três linhas.

challenge icon

Desafio

Fácil

Escreva uma função chamada make_triangle com um parâmetro int n. Ela retorna um array irregular de n linhas:

  • A linha 1 tem 1 célula, a linha 2 tem 2 células, e assim por diante, até a linha n, que tem n células.
  • Contando as linhas e as colunas a partir de 1, cada célula contém o número da sua linha multiplicado pelo número da sua coluna. A célula na linha 3, coluna 2 contém 3 * 2 = 6.

Por exemplo, make_triangle(3) retorna:

[[1], [2, 4], [3, 6, 9]]

Os testes chamam make_triangle() por conta própria e verificam o array retornado. Não a chame e não imprima nada.

Experimente você mesmo

func make_triangle(n: int):
	# Escreva o código aqui
	pass
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online