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 zerosA 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.
Desafio
FácilLeia 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 zerosExperimente você mesmo
rows = gets.to_i
cols = gets.to_i
# TODO: construir a grade e imprimi-la com inspect
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
1Strings a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um Intervalo?Métodos de IntervaloIntervalos em Case / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline3Arrays 2D
Fundamentos de Arrays 2DAcessando Elementos 2DIterando sobre Arrays 2DPadrões 2D ComunsRecapitulação - Operações com Matrizes6Projeto - Gerenciador de Biblioteca
Visão Geral do ProjetoAdicionar Livro