Bases des tableaux 2D
Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 10 sur 56.
Un tableau 2D est un tableau dont les éléments sont eux-mêmes des tableaux. Chaque tableau interne représente une ligne dans une grille.
cinema = [
[true, true], # Ligne 0
[false, true] # Ligne 1
]Cela représente une grille 2×2, deux lignes, chacune avec deux colonnes.
Pour créer une grille d'entiers 3×4 :
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]Vous pouvez construire une grille remplie d'une valeur par défaut en utilisant Array.new deux fois, une fois pour les lignes, une fois pour les colonnes :
grid = Array.new(3) { Array.new(4, 0) }
# 3 lignes, 4 colonnes, tous des zérosLa forme de bloc ({ Array.new(4, 0) }) est importante, elle crée un nouveau tableau interne pour chaque ligne. Sans cela, chaque ligne pointerait vers le même tableau.
Défi
FacileLisez deux entiers (deux lignes d'entrée) : rows et cols. Construisez un tableau 2D de cette taille où chaque cellule est égale à row * cols + col + 1 (ainsi la première ligne compte à partir de 1, et la grille se remplit dans l'ordre de lecture).
Affichez la grille en utilisant inspect sur le tableau extérieur, sur une seule ligne.
Pour l'entrée 2 puis 3, la sortie est :
[[1, 2, 3], [4, 5, 6]]Aide-mémoire
Les tableaux 2D sont des tableaux de tableaux, où chaque tableau interne est une ligne :
matrix = [
[1, 2, 3],
[4, 5, 6]
]Construisez une grille avec une valeur par défaut en utilisant Array.new avec un bloc (le bloc garantit que chaque ligne est un tableau distinct) :
grid = Array.new(3) { Array.new(4, 0) }
# 3 lignes, 4 colonnes, tous des zérosEssayez vous-même
rows = gets.to_i
cols = gets.to_i
# TODO : construire la grille et l'afficher avec inspect
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 - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data Pipeline3Tableaux 2D
Bases des tableaux 2DAccéder aux éléments 2DParcourir des tableaux 2DModèles 2D courantsRécapitulatif - Opérations sur les matrices6Projet - Gestionnaire de bibliothèque
Présentation du projetAjouter un livre