Typowe wzorce tablic 2D
Część sekcji Logika i przepływ programu ścieżki JavaScript w Coddy. Lekcja 13 z 65.
Podczas pracy z tablicami 2D często pojawiają się pewne wzorce. Rozpoznawanie tych wzorców może pomóc Ci sprawniej rozwiązywać problemy. Oto kilka typowych wzorców:
Przechodzenie po przekątnej
Dostęp do elementów, w których indeks wiersza jest równy indeksowi kolumny (matrix[i][i]), daje przekątną główną. W przypadku przekątnej przeciwnej suma indeksów wiersza i kolumny jest równa rozmiarowi tablicy pomniejszonemu o 1 (matrix[i][size - 1 - i]).
Na przykład:
1 2 3
4 5 6
7 8 9Przejdź przez przekątną główną (matrix[i][i]): 1, 5, 9
Przejdź przez przekątną poboczną (matrix[i][size - 1 - i]): 3, 5, 7
Przechodzenie po krawędzi
Aby przejść po elementach krawędzi, utrzymujesz jeden indeks stały (0 lub size - 1), iterując po drugim.
Aby uzyskać dostęp do górnej krawędzi, iterujesz po kolumnach, ustawiając indeks wiersza na 0.
Na przykład:
1 2 3 4
5 6 7 8
9 10 11 12elementy na brzegu: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (wszystkie oprócz 6 i 7)
Wyzwanie
ŁatwyUtwórz funkcję o nazwie printPatterns, która przyjmuje jako dane wejściowe kwadratową tablicę 2D liczb całkowitych (matrix) i wyświetla następujące wzorce:
- Przekątna główna: Wyświetl wszystkie elementy, których indeks wiersza jest równy indeksowi kolumny.
- Przekątna przeciwna: Wyświetl wszystkie elementy, dla których suma indeksów wiersza i kolumny jest równa rozmiarowi macierzy pomniejszonemu o 1.
- Krawędzie: Wyświetl elementy górnej, dolnej, lewej i prawej krawędzi macierzy.
Wynik powinien wyglądać tak:
Main Diagonal: 1 6 11 16
Anti-Diagonal: 4 7 10 13
Top Border: 1 2 3 4
Bottom Border: 13 14 15 16
Left Border: 1 5 9 13
Right Border: 4 8 12 16Spróbuj swoich sił
function printPatterns(matrix) {
let mainDiagonal = []
// TODO: Zaimplementuj
console.log("Main Diagonal:", mainDiagonal.join(" "));
let antiDiagonal = [];
// TODO: Zaimplementuj
console.log("Anti-Diagonal:", antiDiagonal.join(" "));
let topBorder = [];
// TODO: Zaimplementuj
console.log("Top Border:", topBorder.join(" "));
let bottomBorder = [];
// TODO: Zaimplementuj
console.log("Bottom Border:", bottomBorder.join(" "));
let leftBorder = [];
// TODO: Zaimplementuj
console.log("Left Border:", leftBorder.join(" "));
let rightBorder = [];
// TODO: Zaimplementuj
console.log("Right Border:", rightBorder.join(" "));
}
// Nie pisz niczego poza funkcją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
1Napisy w praktyce
Podstawy napisówIterowanie po napisachLiterały szablonoweMetody napisówPodsumowanie – mistrz napisów4JSON, część 2
Iterowanie po JSONZagnieżdżony JSONOpcjonalne łańcuchowanie w JSONPłytka i głęboka kopiaPowtórka — sklep rowerowyPowtórka — Układ Słoneczny7System zarządzania biblioteką
Omówienie projektuDodawanie książek10Zarządzanie systemem festiwalowym
Przegląd projektuDodawanie filmów i miejsc2Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DZagnieżdżone pętle z tablicami 2DPowtórka — tablice 2DDodawanie i odejmowanie macierzyTablice nieregularneTablice 3D i większeTypowe wzorce tablic 2DPowtórka — wszystko o tablicach5Zbiory — część 1
Czym jest zbiór?Iterowanie po zbiorachDodawanie elementuUsuwanie elementuSprawdzanie, czy element istniejeRozmiar i sprawdzanie, czy zbiór jest pustyKopiowanie i czyszczeniePodsumowanie — podstawy zbiorów8Ciekawe zagadnienia dotyczące tablic
Destrukturyzacja tablicSkładnia spread w tablicachRzadkie tablicePodsumowanie – warsztaty z tablic3JSON część 1
Czym jest JSON?Sprawdzanie, czy klucz istniejeMetody obiektówOperator spread — część 1Operator spread — część 2Usuwanie kluczyPodsumowanie — manipulowanie kluczami w JSONPoćwicz samodzielnie: Kompilator JavaScript online