Parcourir les 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
endCe 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.
Défi
FacileLe 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) = valueUtilisez 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) = 7Essayez 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
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
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - Tisseur de chaînes4Blocs, Procs et Lambdas
Qu'est-ce qu'un bloc ?do..end ou accoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes, 2e partie
Hash.new avec valeurs par défautParcourir les hashesHashes imbriquésFusionner et transformerRécapitulatif - Compteur de fréquences10Projet - Dossiers des étudiants
Présentation du projetAjouter un étudiant2Plages
Qu’est-ce qu’une plage ?Méthodes des plagesPlages dans Case / WhenRécapitulatif - Exercices sur les plages5Puissance des Enumerable
Select et RejectChaînage de MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Pipeline de données3Tableaux 2D
Bases des tableaux 2DAccéder aux éléments 2DParcourir les tableaux 2DMotifs courants en 2DRécapitulatif - Opérations sur les matrices6Projet - Gestionnaire de bibliothèque
Vue d’ensemble du projetAjouter un livreEntraînez-vous par vous-même : Compilateur Ruby en ligne