Menu
Coddy logo textTech

Acessando Elementos 2D

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

Para ler ou atualizar uma única célula em um array 2D, encadeie duas buscas de índice: a primeira escolhe a linha, a segunda escolhe a coluna.

matrix = [
  [10, 20, 30],
  [40, 50, 60],
  [70, 80, 90]
]

puts matrix[0][0]   # 10  (superior esquerdo)
puts matrix[1][2]   # 60  (linha 1, coluna 2)
puts matrix[2][0]   # 70  (inferior esquerdo)

Atualizar uma célula usa a mesma sintaxe no lado esquerdo:

matrix[0][1] = 99
puts matrix[0].inspect   # [10, 99, 30]

Duas consultas de formato úteis:

puts matrix.length         # 3 (número de linhas)
puts matrix[0].length      # 3 (colunas na linha 0)

Os índices começam em 0 e vão até length - 1. Ultrapassar o final retorna nil em vez de gerar um erro.

challenge icon

Desafio

Iniciante

O array bidimensional matrix é fornecido. Leia três inteiros (três linhas): r1, c1, depois v. Então:

  1. Imprima o valor em matrix[r1][c1]
  2. Defina matrix[r1][c1] = v
  3. Imprima todo o matrix atualizado usando inspect

Para a entrada 1 / 2 / 99, a saída é:

60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]

Folha de consulta

Acesse e atualize células em um array 2D usando índices encadeados [row][col]:

matrix = [
  [10, 20, 30],
  [40, 50, 60]
]

puts matrix[1][2]    # 60
matrix[1][2] = 99    # update cell
puts matrix.inspect  # [[10, 20, 30], [40, 50, 99]]

Consultas de formato (shape):

matrix.length      # number of rows
matrix[0].length   # number of columns in row 0

Os índices começam em 0; acessar fora dos limites (out-of-bounds) retorna nil.

Experimente você mesmo

matrix = [
  [10, 20, 30],
  [40, 50, 60],
  [70, 80, 90]
]

r1 = gets.to_i
c1 = gets.to_i
v  = gets.to_i

# TODO: imprimir matrix[r1][c1], atribuir v, depois imprimir a matriz inteira
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