Menu
Coddy logo textTech

Fundamentos de Arrays 2D

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 10 de 56.

Um array 2D é um array cujos elementos são, eles próprios, arrays. Cada array interno representa uma linha em uma grade.

cinema = [
  [true,  true],   # Linha 0
  [false, true]    # Linha 1
]

Isso representa uma grade 2×2, duas linhas, cada uma com duas colunas.

Para criar uma grade 3×4 de inteiros:

matrix = [
  [ 1,  2,  3,  4],
  [ 5,  6,  7,  8],
  [ 9, 10, 11, 12]
]

Você pode construir uma grade preenchida com um valor padrão usando Array.new duas vezes, uma para as linhas e outra para as colunas:

grid = Array.new(3) { Array.new(4, 0) }
# 3 linhas, 4 colunas, todos zeros

A forma de bloco ({ Array.new(4, 0) }) é importante, pois ela cria um novo array interno para cada linha. Sem ela, cada linha apontaria para o mesmo array.

challenge icon

Desafio

Fácil

Leia dois números inteiros (duas linhas de entrada): rows e cols. Construa um array 2D desse tamanho onde cada célula é igual a row * cols + col + 1 (assim, a primeira linha conta a partir de 1, e a grade é preenchida na ordem de leitura).

Imprima a grade usando inspect no array externo, em uma linha.

Para a entrada 2 e depois 3, a saída é:

[[1, 2, 3], [4, 5, 6]]

Folha de consulta

Arrays 2D são arrays de arrays, onde cada array interno é uma linha:

matrix = [
  [1, 2, 3],
  [4, 5, 6]
]

Construa uma grade com um valor padrão usando Array.new com um bloco (o bloco garante que cada linha seja um array separado):

grid = Array.new(3) { Array.new(4, 0) }
# 3 linhas, 4 colunas, todos zeros

Experimente você mesmo

rows = gets.to_i
cols = gets.to_i

# TODO: construir a grade e imprimi-la com inspect
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo