Padrões Comuns de Arrays 2D
Parte da seção Lógica & Fluxo do Journey de JavaScript da Coddy — lição 13 de 65.
Certos padrões aparecem frequentemente ao trabalhar com arrays 2D. Reconhecer esses padrões pode ajudá-lo a resolver problemas de forma mais eficiente. Aqui estão alguns padrões comuns:
Percorrimento Diagonal
Acessar elementos onde o índice da linha é igual ao índice da coluna (matrix[i][i]) fornece a diagonal principal. Para a antidiagonal, a soma dos índices de linha e coluna é igual ao tamanho do array menos 1 (matrix[i][size - 1 - i]).
Por exemplo:
1 2 3
4 5 6
7 8 9Percorrer a diagonal principal (matrix[i][i]): 1, 5, 9
Percorrer a antidiagonal (matrix[i][size - 1 - i]): 3, 5, 7
Travessia de Borda
Para percorrer os elementos da borda, você mantém um índice constante (0 ou size - 1) enquanto itera sobre o outro.
Para acessar a borda superior, você itera sobre as colunas com o índice da linha fixado em 0.
Por exemplo:
1 2 3 4
5 6 7 8
9 10 11 12elementos de borda: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (todos exceto 6 e 7)
Desafio
FácilCrie uma função chamada printPatterns que recebe uma matriz quadrada 2D de inteiros (matrix) como entrada e imprime os seguintes padrões:
- Diagonal Principal: Imprima todos os elementos onde o índice da linha é igual ao índice da coluna.
- Diagonal Secundária: Imprima todos os elementos onde a soma dos índices da linha e da coluna é igual ao tamanho da matriz menos 1.
- Bordas: Imprima os elementos das bordas superior, inferior, esquerda e direita da matriz.
A saída deve ser parecida com esta:
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 16Folha de consulta
Padrões comuns de percurso em arrays 2D:
Percurso Diagonal
Diagonal principal: matrix[i][i] (o índice da linha é igual ao índice da coluna)
Anti-diagonal: matrix[i][size - 1 - i] (a soma dos índices da linha e da coluna é igual a size - 1)
1 2 3
4 5 6
7 8 9Diagonal principal: 1, 5, 9
Anti-diagonal: 3, 5, 7
Percurso de Borda
Mantenha um índice constante (0 ou size - 1) enquanto itera sobre o outro:
- Borda superior: índice da linha = 0, itera sobre as colunas
- Borda inferior: índice da linha = size - 1, itera sobre as colunas
- Borda esquerda: índice da coluna = 0, itera sobre as linhas
- Borda direita: índice da coluna = size - 1, itera sobre as linhas
Experimente você mesmo
function printPatterns(matrix) {
let mainDiagonal = []
// TODO: Implementar
console.log("Main Diagonal:", mainDiagonal.join(" "));
let antiDiagonal = [];
// TODO: Implementar
console.log("Anti-Diagonal:", antiDiagonal.join(" "));
let topBorder = [];
// TODO: Implementar
console.log("Top Border:", topBorder.join(" "));
let bottomBorder = [];
// TODO: Implementar
console.log("Bottom Border:", bottomBorder.join(" "));
let leftBorder = [];
// TODO: Implementar
console.log("Left Border:", leftBorder.join(" "));
let rightBorder = [];
// TODO: Implementar
console.log("Right Border:", rightBorder.join(" "));
}
// Não escreva nada fora da funçãoEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Strings em Profundidade
Fundamentos de StringsIterar sobre StringsTemplate LiteralsMétodos de StringRecapitulação - String Weaver4JSON Parte 2
Iterar sobre JSONJSON AninhadoEncadeamento Opcional em JSONCópia Rasa e ProfundaRecapitulação - Loja de BicicletasRecapitulação - Sistema Solar7Sistema de Gerenciamento de Biblioteca
Visão Geral do ProjetoAdicionando Livros10Gerenciar Sistema de Festival
Visão Geral do ProjetoAdicionar Filmes e Locais2Arrays Multidimensionais
Fundamentos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DRecapitulação - Arrays 2DAdição e Subtração de MatrizesArrays IrregularesArrays 3D e AlémPadrões Comuns de Arrays 2DRecapitulação - Tudo Sobre Arrays5Sets Parte 1
O que é um Set?Iterando sobre SetsAdicionando um elementoRemovendo um elementoVerificando se um elemento existeTamanho e Is EmptyCopy e ClearRecapitulação - O básico de Sets8Tópicos Interessantes sobre Arrays
Desestruturação de ArraysSintaxe Spread em ArraysArrays EsparsosRecapitulação - Workshop de Arrays3JSON Parte 1
O que é um JSON?Verificar se a Chave ExisteMétodos de ObjetoO Spread Operator Parte 1O Spread Operator Parte 2Remover ChavesRecapitulação - Manipular Chaves JSON