Menu
Coddy logo textTech

Parcourir des tableaux 2D

Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 12 sur 56.

Pour visiter chaque cellule d'un tableau en 2D, vous imbriquez deux itérations. La boucle externe parcourt les lignes ; la boucle interne parcourt les colonnes de cette ligne.

Le motif Ruby le plus idiomatique utilise each deux fois :

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  (chacun sur sa propre ligne)

Si vous avez également besoin des index de ligne et de colonne, par exemple pour étiqueter chaque cellule, utilisez each_with_index aux deux niveaux :

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

Ce style est plus court et plus sûr que le suivi manuel des index, il n'y a aucun risque de dépasser la fin d'une ligne.

challenge icon

Défi

Facile

Le tableau 2D grid est fourni (3 lignes × 3 colonnes d'entiers).

Pour chaque ligne, trouvez chaque cellule dont la valeur est strictement supérieure à la moyenne de cette ligne. Affichez chaque cellule de ce type sur sa propre ligne au format :

(r,c) = value

Utilisez des each_with_index imbriqués. Calculez la moyenne à l'intérieur de la boucle externe afin que le seuil de chaque ligne soit indépendant.

Pour la grille par défaut, les cellules qui dépassent la moyenne de leur ligne sont :

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

Aide-mémoire

Pour itérer sur chaque cellule d'un tableau en 2D, imbriquez deux appels each :

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

Pour accéder également aux index des lignes et des colonnes, utilisez each_with_index aux deux niveaux :

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

Essayez vous-même

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

# À FAIRE : each_with_index imbriqués, afficher les cellules > la moyenne de la ligne
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux