Menu
CoddyTech

Motifs courants des tableaux 2D

Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 17 sur 78.

Quelques façons de parcourir une grille reviennent souvent. Ces exemples utilisent une grille carrée de taille n :

var grid := [
	[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]
]
var n := grid.size()

Diagonales. Sur la diagonale principale, l’indice de ligne est égal à l’indice de colonne : grid[i][i]. Sur l’antidiagonale, du coin supérieur droit au coin inférieur gauche, la colonne est n - 1 - i. Une seule boucle suffit :

for i in range(n):
	print(grid[i][i], " ", grid[i][n - 1 - i])
1 3
5 5
9 7

Lignes, colonnes et bordures. Fixe un indice et parcours l’autre. La ligne du haut est grid[0] et la ligne du bas est grid[n - 1]. Pour une colonne, c reste fixe tandis que la ligne change :

var left_total := 0
for r in range(n):
	left_total += grid[r][0] # colonne de gauche : 1 + 4 + 7
print(left_total) # 12

Voisins. Dans les jeux sur grille, on regarde souvent les cellules autour d’une position : en haut, en bas, à gauche et à droite. Stocke les quatre déplacements sous forme d’un tableau de paires [row, column], et ignore ceux qui sortent de la grille :

var r := 0
var c := 1
for step in [[-1, 0], [1, 0], [0, -1], [0, 1]]:
	var nr: int = r + step[0]
	var nc: int = c + step[1]
	if nr >= 0 and nr < n and nc >= 0 and nc < n:
		print(grid[nr][nc])

La cellule grid[0][1] se trouve sur la bordure supérieure, elle a donc 3 voisins : 5, 1 et 3.

challenge icon

Défi

Facile

Écris une fonction nommée print_patterns avec un paramètre, grid : un tableau 2D carré d’entiers (déclare-le comme grid: Array). Elle affiche six lignes, avec les valeurs séparées par un seul espace :

  1. Main diagonal: et les cellules dont l’indice de ligne est égal à l’indice de colonne
  2. Anti-diagonal: et les cellules allant du coin supérieur droit au coin inférieur gauche
  3. Top row: et la première ligne
  4. Bottom row: et la dernière ligne
  5. Left column: et la première colonne, de haut en bas
  6. Right column: et la dernière colonne, de haut en bas

Pour la grille [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]], la sortie est :

Main diagonal: 1 6 11 16
Anti-diagonal: 4 7 10 13
Top row: 1 2 3 4
Bottom row: 13 14 15 16
Left column: 1 5 9 13
Right column: 4 8 12 16

Les tests appellent eux-mêmes print_patterns(). Ne l’appelle pas et ne retourne rien.

Essayez vous-même

func print_patterns(grid: Array):
	# Écrivez le code ici
	pass
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 d’exécution

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