Conceptos básicos de arreglos 2D
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 10 de 56.
Un array bidimensional es un array cuyos elementos son, a su vez, arrays. Cada array interno representa una fila en una cuadrícula.
cinema = [
[true, true], # Fila 0
[false, true] # Fila 1
]Esto representa una cuadrícula de 2×2, dos filas, cada una con dos columnas.
Para crear una cuadrícula de 3×4 de enteros:
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]Puedes construir una cuadrícula llena con un valor por defecto usando Array.new dos veces, una para las filas y otra para las columnas:
grid = Array.new(3) { Array.new(4, 0) }
# 3 filas, 4 columnas, todo cerosLa forma de bloque ({ Array.new(4, 0) }) es importante, ya que crea un nuevo array interno para cada fila. Sin ella, cada fila apuntaría al mismo array.
Desafío
FácilLee dos enteros (dos líneas de entrada): rows y cols. Construye un arreglo bidimensional de ese tamaño donde cada celda sea igual a row * cols + col + 1 (así que la primera fila cuenta desde 1, y la cuadrícula se llena en orden de lectura).
Imprime la cuadrícula usando inspect en el arreglo exterior, en una sola línea.
Para la entrada 2 luego 3, la salida es:
[[1, 2, 3], [4, 5, 6]]Hoja de referencia
Los arreglos bidimensionales son arreglos de arreglos, donde cada arreglo interno es una fila:
matrix = [
[1, 2, 3],
[4, 5, 6]
]Construye una cuadrícula con un valor por defecto usando Array.new con un bloque (el bloque asegura que cada fila sea un arreglo independiente):
grid = Array.new(3) { Array.new(4, 0) }
# 3 filas, 4 columnas, todo cerosPruébalo tú mismo
rows = gets.to_i
cols = gets.to_i
# TODO: construir la cuadrícula e imprimirla con inspect
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
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline3Arreglos 2D
Conceptos básicos de arreglos 2DAcceso a elementos 2DIteración sobre arreglos 2DPatrones comunes en 2DResumen - Operaciones con matrices6Proyecto - Gestor de biblioteca
Descripción general del proyectoAñadir libro