Menu
Coddy logo textTech

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  9

Przejdź 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 12

elementy na brzegu: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (wszystkie oprócz 6 i 7)

challenge icon

Wyzwanie

Łatwy

Utwó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:

  1. Przekątna główna: Wyświetl wszystkie elementy, których indeks wiersza jest równy indeksowi kolumny.
  2. Przekątna przeciwna: Wyświetl wszystkie elementy, dla których suma indeksów wiersza i kolumny jest równa rozmiarowi macierzy pomniejszonemu o 1.
  3. 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 16

Spró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ą
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 JavaScript online