Menu
Coddy logo textTech

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  # 10

Diagonale 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, 9

Transposer : 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.

challenge icon

Défi

Facile

La matrix carrée est donnée (n × n). Affichez trois lignes, toutes dérivées des modèles de la théorie :

  1. Anti-diagonal sum: <n>, la somme des cellules où r + c == matrix.length - 1
  2. Column sums: [...], la somme de chaque colonne. Astuce : transposez d'abord, puis mappez chaque ligne à sa somme, puis utilisez inspect
  3. Symmetric: true ou false : 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: false

Essayez 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
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur Ruby en ligne