Menu
CoddyTech

Tablice postrzępione

Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 16 z 78.

Wiersze tablicy 2D nie muszą mieć tej samej długości. Tablica 2D, której wiersze mają różne długości, to tablica postrzępiona. W tym przypadku każdy wiersz zawiera wyniki jednego gracza, a gracze rozegrali różną liczbę rund:

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

W tablicy postrzępionej scores[0].size() nie jest długością każdego wiersza. Przejdź pętlą po kolumnach bieżącego wiersza, używając 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

Pętla, która zawsze używa długości pierwszego wiersza, odwołuje się poza koniec krótszych wierszy: scores[1][2] jest błędem, ponieważ wiersz 1 ma tylko indeks 0. for value in row zawsze pasuje do wiersza, po którym przechodzi.

Tworzysz postrzępioną tablicę przypominającą siatkę, w której każdy wiersz ma inną długość. W tym trójkącie wiersz r ma r + 1 komórek:

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

Wiersz może być nawet pusty: [[1, 2], [], [3]] to prawidłowa tablica postrzępiona z trzema wierszami.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję o nazwie make_triangle z jednym parametrem typu int o nazwie n. Zwraca ona poszarpaną tablicę z n wierszami:

  • Wiersz 1 ma 1 komórkę, wiersz 2 ma 2 komórki i tak dalej, aż do wiersza n, który ma n komórek.
  • Licząc wiersze i kolumny od 1, każda komórka zawiera iloczyn numeru wiersza i numeru kolumny. Komórka w wierszu 3, kolumnie 2 zawiera 3 * 2 = 6.

Na przykład make_triangle(3) zwraca:

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

Testy same wywołują make_triangle() i sprawdzają zwróconą tablicę. Nie wywołuj tej funkcji ani niczego nie wypisuj.

Spróbuj swoich sił

func make_triangle(n: int):
	# Napisz kod tutaj
	pass
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator GDScript online