Menu
Coddy logo textTech

Iterare sugli array 2D

Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 12 di 56.

Per visitare ogni cella in un array 2D, annidi due cicli. Il ciclo esterno scorre le righe; quello interno scorre le colonne di quella riga.

Lo schema Ruby più idiomatico usa each due volte:

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  (ognuno su una riga separata)

Se hai bisogno anche degli indici di riga e colonna, per esempio per etichettare ogni cella, usa each_with_index a entrambi i livelli:

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

Questo stile è più breve e sicuro che tenere traccia degli indici manualmente: non c'è il rischio di superare la fine di una riga.

challenge icon

Sfida

Facile

È dato l'array 2D grid (3 righe × 3 colonne di interi).

Per ogni riga, trova ogni cella il cui valore è strettamente maggiore della media di quella riga. Stampa ogni cella del genere su una riga a sé stante nel formato:

(r,c) = value

Usa each_with_index annidati. Calcola la media all'interno del ciclo esterno, così la soglia di ogni riga è indipendente.

Per la griglia predefinita, le celle che superano la media della propria riga sono:

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

Provalo tu

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

# TODO: usa each_with_index annidati, stampa le celle > della media della riga
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Ruby online