Menu
CoddyTech

Patrones comunes de arrays 2D

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 17 de 78.

Algunas formas de recorrer una cuadrícula aparecen una y otra vez. Estos ejemplos usan una cuadrícula cuadrada de tamaño n:

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

Diagonales. En la diagonal principal, el índice de fila es igual al índice de columna: grid[i][i]. En la diagonal secundaria, desde la esquina superior derecha hasta la esquina inferior izquierda, la columna es n - 1 - i. Basta con un bucle:

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

Filas, columnas y bordes. Fija un índice y recorre el otro. La fila superior es grid[0] y la fila inferior es grid[n - 1]. Una columna mantiene fijo c mientras cambia la fila:

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

Vecinos. En los juegos de cuadrícula, a menudo miras las celdas alrededor de una posición: arriba, abajo, a la izquierda y a la derecha. Guarda los cuatro pasos como un array de pares [row, column] y omite los pasos que salen de la cuadrícula:

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 celda grid[0][1] está en el borde superior, así que tiene 3 vecinos: 5, 1 y 3.

challenge icon

Desafío

Fácil

Escribe una función llamada print_patterns con un parámetro, grid: una matriz 2D cuadrada de enteros (declárala como grid: Array). Imprime seis líneas, con los valores separados por espacios individuales:

  1. Main diagonal: y las celdas donde el índice de fila es igual al índice de columna
  2. Anti-diagonal: y las celdas desde la esquina superior derecha hasta la esquina inferior izquierda
  3. Top row: y la primera fila
  4. Bottom row: y la última fila
  5. Left column: y la primera columna, de arriba abajo
  6. Right column: y la última columna, de arriba abajo

Para la cuadrícula [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]], la salida es:

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

Las pruebas llaman a print_patterns() por su cuenta. No la llames ni devuelvas nada.

Pruébalo tú mismo

func print_patterns(grid: Array):
	# Escribe el código aquí
	pass
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online