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()) # 1W 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: 155Pę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.
Wyzwanie
ŁatwyNapisz 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 mankomó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
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
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online