Motif 4 — Arithmétique d'indices & parcours de matrices
Les grilles ont l'air intimidantes, mais voici le secret : une grille n'est qu'une liste de listes, et la plupart des problèmes de grille se résolvent en réussissant l'arithmétique lignes-et-colonnes — pas par des astuces malignes.
L'idée, en une ligne
Une grille, ce sont des lignes empilées sur des lignes. Vous atteignez n'importe quelle cellule avec grid[row][col], et tout le travail consiste à choisir quelle ligne et quelle colonne visiter ensuite. C'est l'arithmétique d'indices.
Comment le repérer
L'entrée est une grille 2D, une image, ou une table, et la tâche utilise des mots comme :
- rotation — tourner toute la grille de 90°
- transposition — échanger lignes et colonnes
- diagonale — parcourir la ligne de coin à coin
- spirale — lire le tour des bords, en s'enroulant vers l'intérieur
Deux faits qui débloquent presque tout
- Transposition : la cellule en (r, c) va en (c, r) — lignes et colonnes s'échangent.
- Rotation 90° horaire : transposez d'abord, puis inversez chaque ligne.
- Une cellule de la diagonale principale est simplement là où row == col.
Voyez-le à l'œuvre
grid = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
# Transpose: cell (r, c) -> (c, r)
def transpose(m):
return [[m[r][c] for r in range(len(m))] for c in range(len(m[0]))]
# Rotate 90 clockwise = transpose, then reverse each row
def rotate_cw(m):
return [row[::-1] for row in transpose(m)]
print(rotate_cw(grid)) # [[7,4,1],[8,5,2],[9,6,3]]
# Main diagonal: cells where row == col
print([grid[i][i] for i in range(len(grid))]) # [1, 5, 9]Lisez-le de haut en bas : la transposition échange chaque (r, c) avec (c, r) ; tourner n'est que cet échange suivi de l'inversion de chaque ligne ; et la diagonale est chaque cellule où le numéro de ligne égale le numéro de colonne.
Avancé — spirales et bugs off-by-one
Les parcours en spirale et de frontière utilisent quatre extrémités mobiles — top, bottom, left, et right — qui se rétrécissent vers l'intérieur après chaque passe. C'est l'idée des deux pointeurs de tout à l'heure, juste en 2D.
Basé sur la doc Python officielle (listes imbriquées / structures de données)
Toutes les leçons de Bootcamp de logique
- Motif 1 — Compter la fréquence des choses
- Motif 2 — Deux pointeurs
- Motif 3 — Fenêtre glissante
- Motif 4 — Arithmétique d'indices & parcours de matrices
- Les essentiels de la POO — classes, héritage, méthodes magiques, décorateurs