Typowe wzorce tablic 2D
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 17 z 78.
Kilka sposobów poruszania się po siatce pojawia się raz za razem. W tych przykładach użyto kwadratowej siatki o rozmiarze n:
var grid := [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
var n := grid.size()Przekątne. Na głównej przekątnej indeks wiersza jest równy indeksowi kolumny: grid[i][i]. Na przekątnej przeciwległej, biegnącej od prawego górnego rogu do lewego dolnego, kolumna ma indeks n - 1 - i. Wystarczy jedna pętla:
for i in range(n):
print(grid[i][i], " ", grid[i][n - 1 - i])1 3
5 5
9 7Wiersze, kolumny i krawędzie. Ustal jeden indeks i wykonaj pętlę po drugim. Górny wiersz to grid[0], a dolny wiersz to grid[n - 1]. W kolumnie c pozostaje stałe, podczas gdy wiersz się zmienia:
var left_total := 0
for r in range(n):
left_total += grid[r][0] # lewa kolumna: 1 + 4 + 7
print(left_total) # 12Sąsiedzi. W grach siatkowych często sprawdzasz komórki wokół danej pozycji: powyżej, poniżej, po lewej i po prawej. Zapisz te cztery kroki jako tablicę par [row, column] i pomiń kroki wychodzące poza siatkę:
var r := 0
var c := 1
for step in [[-1, 0], [1, 0], [0, -1], [0, 1]]:
var nr: int = r + step[0]
var nc: int = c + step[1]
if nr >= 0 and nr < n and nc >= 0 and nc < n:
print(grid[nr][nc])Komórka grid[0][1] znajduje się na górnej krawędzi, więc ma 3 sąsiadów: 5, 1 i 3.
Wyzwanie
ŁatwyNapisz funkcję o nazwie print_patterns z jednym parametrem, grid: kwadratową tablicą 2D liczb całkowitych (zadeklaruj ją jako grid: Array). Wypisuje sześć wierszy, a wartości oddziela pojedynczymi spacjami:
Main diagonal:i komórki, w których indeks wiersza jest równy indeksowi kolumnyAnti-diagonal:i komórki od prawego górnego do lewego dolnego roguTop row:i pierwszy wierszBottom row:i ostatni wierszLeft column:i pierwsza kolumna, od góry do dołuRight column:i ostatnia kolumna, od góry do dołu
Dla tablicy [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] wynikiem jest:
Main diagonal: 1 6 11 16
Anti-diagonal: 4 7 10 13
Top row: 1 2 3 4
Bottom row: 13 14 15 16
Left column: 1 5 9 13
Right column: 4 8 12 16Testy same wywołują print_patterns(). Nie wywołuj jej i niczego nie zwracaj.
Spróbuj swoich sił
func print_patterns(grid: Array):
# Wpisz 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