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 livreEntraînez-vous par vous-même : Compilateur Ruby en ligne