Patrones comunes en arreglos 2D
Parte de la sección Lógica y Flujo del Journey de JavaScript de Coddy — lección 13 de 65.
Ciertos patrones aparecen a menudo al trabajar con arreglos bidimensionales. Reconocer estos patrones puede ayudarte a resolver problemas de manera más eficiente. Aquí tienes algunos patrones comunes:
Recorrido Diagonal
Acceder a los elementos donde el índice de la fila es igual al índice de la columna (matrix[i][i]) te da la diagonal principal. Para la antidiagonal, la suma de los índices de fila y columna es igual al tamaño del arreglo menos 1 (matrix[i][size - 1 - i]).
Por ejemplo:
1 2 3
4 5 6
7 8 9Recorrer la diagonal principal (matrix[i][i]): 1, 5, 9
Recorrer la antidiagonal (matrix[i][size - 1 - i]): 3, 5, 7
Recorrido del borde
Para recorrer los elementos del borde, mantienes un índice constante (0 o size - 1) mientras iteras sobre el otro.
Para acceder al borde superior, se itera sobre las columnas con el índice de fila fijo en 0.
Por ejemplo:
1 2 3 4
5 6 7 8
9 10 11 12elementos del borde: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (todos excepto 6 y 7)
Desafío
FácilCrea una función llamada printPatterns que recibe un array bidimensional cuadrado de enteros (matrix) como entrada e imprima los siguientes patrones:
- Diagonal Principal: Imprime todos los elementos donde el índice de la fila es igual al índice de la columna.
- Anti-Diagonal: Imprime todos los elementos donde la suma de los índices de fila y columna es igual al tamaño de la matriz menos 1.
- Bordes: Imprime los elementos de los bordes superior, inferior, izquierdo y derecho de la matriz.
La salida debería verse así:
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 16Hoja de referencia
Patrones comunes de recorrido de arreglos bidimensionales:
Recorrido diagonal
Diagonal principal: matrix[i][i] (el índice de fila es igual al índice de columna)
Anti-diagonal: matrix[i][size - 1 - i] (la suma de los índices de fila y columna es igual a size - 1)
1 2 3
4 5 6
7 8 9Diagonal principal: 1, 5, 9
Anti-diagonal: 3, 5, 7
Recorrido de bordes
Mantener un índice constante (0 o size - 1) mientras se itera sobre el otro:
- Borde superior: índice de fila = 0, iterar columnas
- Borde inferior: índice de fila = size - 1, iterar columnas
- Borde izquierdo: índice de columna = 0, iterar filas
- Borde derecho: índice de columna = size - 1, iterar filas
Pruébalo tú mismo
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(" "));
}
// No escribir nada fuera de la funciónEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Strings en profundidad
Fundamentos de stringsIterar sobre stringsTemplate LiteralsMétodos de stringsResumen - String Weaver4JSON Parte 2
Iterar sobre JSONJSON anidadoEncadenamiento opcional en JSONCopia superficial y profundaResumen - Tienda de bicicletasResumen - Sistema solar7Sistema de Gestión de Biblioteca
Descripción general del proyectoAñadir libros10Gestionar el sistema del festival
Descripción general del proyectoAñadir películas y sedes2Arreglos multidimensionales
Conceptos básicos de arreglos 2DAcceso a elementos de arreglos 2DBucles anidados con arreglos 2DResumen - Arreglos 2DSuma y resta de matricesArreglos irregulares (Jagged Arrays)Arreglos 3D y más alláPatrones comunes en arreglos 2DResumen - Todo sobre arreglos5Conjuntos Parte 1
¿Qué es un conjunto?Iterar sobre conjuntosAñadir un elementoEliminar un elementoComprobar si un elemento existeTamaño y Is EmptyCopy y ClearResumen - Conceptos básicos de conjuntos8Temas interesantes de Arrays
Desestructuración de ArraysSintaxis Spread en ArraysArrays dispersosResumen - Taller de Arrays3JSON Parte 1
¿Qué es un JSON?Comprobar si existe una claveMétodos de objetoEl Spread Operator Parte 1El Spread Operator Parte 2Eliminar clavesResumen - Manipular claves de JSON