Menu
Coddy logo textTech

Motifs courants en 2D

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 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 motifs présentés dans 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. Indice : transposez d’abord, puis mappez chaque ligne vers sa somme, et enfin 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: anti-diagonal sum, column sums via transpose, symmetric check
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