Schemi comuni con array 2D
Fa parte della sezione Logica e flusso del percorso JavaScript di Coddy. Lezione 13 di 65.
Alcuni schemi ricorrono spesso quando si lavora con array 2D. Riconoscere questi schemi può aiutarti a risolvere i problemi in modo più efficiente. Ecco alcuni schemi comuni:
Attraversamento diagonale
Accedendo agli elementi in cui l'indice di riga è uguale all'indice di colonna (matrix[i][i]) ottieni la diagonale principale. Per l'antidiagonale, la somma degli indici di riga e di colonna è uguale alla dimensione dell'array meno 1 (matrix[i][size - 1 - i]).
Ad esempio:
1 2 3
4 5 6
7 8 9Attraversa la diagonale principale (matrix[i][i]): 1, 5, 9
Attraversa la diagonale secondaria (matrix[i][size - 1 - i]): 3, 5, 7
Attraversamento del bordo
Per attraversare gli elementi del bordo, mantieni un indice costante (0 o size - 1) mentre iteri sull'altro.
Per accedere al bordo superiore, iteri sulle colonne mantenendo fisso a 0 l'indice di riga.
Ad esempio:
1 2 3 4
5 6 7 8
9 10 11 12elementi del bordo: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (tutti tranne 6 e 7)
Sfida
FacileCrea una funzione denominata printPatterns che accetta in input un array 2D quadrato di numeri interi (matrix) e stampa i seguenti schemi:
- Diagonale principale: stampa tutti gli elementi in cui l’indice di riga è uguale all’indice di colonna.
- Anti-diagonale: stampa tutti gli elementi in cui la somma degli indici di riga e di colonna è uguale alla dimensione della matrice meno 1.
- Bordi: stampa gli elementi dei bordi superiore, inferiore, sinistro e destro della matrice.
L’output dovrebbe apparire così:
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 16Provalo tu
function printPatterns(matrix) {
let mainDiagonal = []
// TODO: Implementa
console.log("Main Diagonal:", mainDiagonal.join(" "));
let antiDiagonal = [];
// TODO: Implementa
console.log("Anti-Diagonal:", antiDiagonal.join(" "));
let topBorder = [];
// TODO: Implementa
console.log("Top Border:", topBorder.join(" "));
let bottomBorder = [];
// TODO: Implementa
console.log("Bottom Border:", bottomBorder.join(" "));
let leftBorder = [];
// TODO: Implementa
console.log("Left Border:", leftBorder.join(" "));
let rightBorder = [];
// TODO: Implementa
console.log("Right Border:", rightBorder.join(" "));
}
// Non scrivere nulla al di fuori della funzioneQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Fondamenti delle stringheIterare sulle stringheTemplate literalsMetodi delle stringheRiepilogo - Intrecciatore di stringhe4JSON Parte 2
Iterare su JSONJSON annidatoOptional chaining in JSONCopia superficiale e profondaRipasso - Negozio di bicicletteRipasso - Sistema solare7Sistema di gestione della biblioteca
Panoramica del progettoAggiungere libri10Gestire il sistema del festival
Panoramica del progettoAggiungere film e sale2Array multidimensionali
Nozioni di base sugli array 2DAccesso agli elementi di un array 2DCicli annidati con array 2DRipasso: array 2DAddizione e sottrazione di matriciArray frastagliatiArray 3D e oltreSchemi comuni con array 2DRipasso: tutto sugli array5Insiemi Parte 1
Che cos'è un insieme?Iterare sugli insiemiAggiungere un elementoRimuovere un elementoVerificare se un elemento esisteDimensione e verifica del vuotoCopiare e svuotareRiepilogo - Nozioni di base sugli insiemi8Argomenti interessanti sugli array
Destrutturazione degli arraySintassi spread negli arrayArray sparsiRiepilogo - Laboratorio sugli array3JSON Parte 1
Che cos'è JSON?Verificare se una chiave esisteMetodi degli oggettiL'operatore spread Parte 1L'operatore spread Parte 2Rimuovere le chiaviRipasso - Manipolare le chiavi in JSONEsercitati da solo: Compilatore JavaScript online