Menu
Coddy logo textTech

Patrones comunes en 2D

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 13 de 56.

Algunas operaciones con arreglos 2D aparecen con tanta frecuencia que vale la pena reconocerlas por su nombre.

Sumar cada celda: aplana la cuadrícula en un array unidimensional y llama a sum:

grid = [[1, 2], [3, 4]]
puts grid.flatten.sum  # 10

Diagonal principal: las celdas donde el índice de fila es igual al índice de columna (matrix[i][i]):

matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

(0...matrix.length).each do |i|
  puts matrix[i][i]
end
# 1, 5, 9

Transponer: Ruby tiene esto incorporado. Las filas se convierten en columnas y viceversa:

matrix.transpose
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Conocer estos por su nombre te evita reescribir los mismos bucles anidados.

challenge icon

Desafío

Fácil

Se proporciona la matrix cuadrada (n × n). Imprime tres líneas, todas derivadas de los patrones de la teoría:

  1. Anti-diagonal sum: <n>, la suma de las celdas donde r + c == matrix.length - 1
  2. Column sums: [...], la suma de cada columna. Pista: primero transpón, luego mapea cada fila a su suma, después usa inspect
  3. Symmetric: true o false: ¿es la matriz igual a su propia transpuesta?

Para la matriz por defecto, la salida es:

Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: false

Pruébalo tú mismo

matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

# TODO: suma de la diagonal secundaria, sumas de columnas mediante transposición, comprobación de simetría
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de Ruby online