Accéder aux éléments 2D
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 11 sur 56.
Pour lire ou mettre à jour une seule cellule dans un tableau 2D, enchaînez deux recherches d’index : la première sélectionne la ligne, la seconde sélectionne la colonne.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (en haut à gauche)
puts matrix[1][2] # 60 (ligne 1, colonne 2)
puts matrix[2][0] # 70 (en bas à gauche)La mise à jour d’une cellule utilise la même syntaxe du côté gauche :
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]Deux requêtes utiles sur les dimensions :
puts matrix.length # 3 (nombre de lignes)
puts matrix[0].length # 3 (colonnes dans la ligne 0)Les index commencent à 0 et vont jusqu’à length - 1. Dépasser la fin renvoie nil plutôt que de lever une erreur.
Défi
DébutantLe tableau 2D matrix est donné. Lisez trois entiers (trois lignes) : r1, c1, puis v. Ensuite :
- Affichez la valeur à
matrix[r1][c1] - Définissez
matrix[r1][c1] = v - Affichez l’intégralité de
matrixmise à jour à l’aide deinspect
Pour l’entrée 1 / 2 / 99, la sortie est :
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]Essayez vous-même
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: afficher matrix[r1][c1], assigner v, puis afficher toute la matrice
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