Menu
Coddy logo textTech

Iteración sobre arreglos 2D

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 12 de 56.

Para visitar cada celda en un arreglo bidimensional, se anidan dos iteraciones. El bucle externo recorre las filas; el bucle interno recorre las columnas de esa fila.

El patrón de Ruby más idiomático utiliza each dos veces:

grid = [
  [1, 2, 3],
  [4, 5, 6]
]

grid.each do |row|
  row.each do |cell|
    puts cell
  end
end
# 1, 2, 3, 4, 5, 6  (cada uno en su propia línea)

Si también necesitas los índices de fila y columna, por ejemplo para etiquetar cada celda, utiliza each_with_index en ambos niveles:

grid.each_with_index do |row, r|
  row.each_with_index do |cell, c|
    puts "(#{r},#{c}) = #{cell}"
  end
end

Este estilo es más corto y seguro que rastrear los índices a mano, no hay riesgo de sobrepasar el final de una fila.

challenge icon

Desafío

Fácil

Se proporciona el array bidimensional grid (3 filas × 3 columnas de enteros).

Para cada fila, encuentra cada celda cuyo valor sea estrictamente mayor que el promedio de esa fila. Imprime cada una de esas celdas en su propia línea con el formato:

(r,c) = value

Utiliza each_with_index anidados. Calcula el promedio dentro del bucle externo para que el umbral de cada fila sea independiente.

Para la cuadrícula por defecto, las celdas que superan el promedio de su fila son:

(0,1) = 8
(1,2) = 9
(2,0) = 6
(2,1) = 7

Hoja de referencia

Para iterar sobre cada celda en un arreglo bidimensional, anida dos llamadas a each:

grid.each do |row|
  row.each do |cell|
    puts cell
  end
end

Para acceder también a los índices de fila y columna, utiliza each_with_index en ambos niveles:

grid.each_with_index do |row, r|
  row.each_with_index do |cell, c|
    puts "(#{r},#{c}) = #{cell}"
  end
end

Pruébalo tú mismo

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

# TODO: each_with_index anidado, imprimir celdas > el promedio de la fila
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