Modèles 2D courants
Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 13 sur 56.
Certaines opérations sur les tableaux 2D reviennent si souvent qu'il vaut la peine de les reconnaître par leur nom.
Sommer chaque cellule : aplatissez la grille en un tableau 1D et appelez sum :
grid = [[1, 2], [3, 4]]
puts grid.flatten.sum # 10Diagonale principale : les cellules où l'indice de ligne est égal à l'indice de colonne (matrix[i][i]) :
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
(0...matrix.length).each do |i|
puts matrix[i][i]
end
# 1, 5, 9Transposer : Ruby intègre déjà cette fonctionnalité. Les lignes deviennent des colonnes et vice-versa :
matrix.transpose
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]Les connaître par leur nom vous évite de réécrire les mêmes boucles imbriquées.
Défi
FacileLa matrix carrée est donnée (n × n). Affichez trois lignes, toutes dérivées des modèles de la théorie :
Anti-diagonal sum: <n>, la somme des cellules oùr + c == matrix.length - 1Column sums: [...], la somme de chaque colonne. Astuce : transposez d'abord, puis mappez chaque ligne à sa somme, puis utilisezinspectSymmetric: trueoufalse: la matrice est-elle égale à sa propre transposée ?
Pour la matrice par défaut, la sortie est :
Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: falseEssayez vous-même
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# TODO : somme de l'anti-diagonale, sommes des colonnes via la transposée, vérification de la symétrie
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