Fatiamento de Arrays com Índices
Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 70 de 88.
Ruby oferece outra maneira de fatiar arrays usando um índice inicial e um comprimento. Em vez de especificar um intervalo, você fornece dois números: onde começar e quantos elementos extrair.
A sintaxe usa uma vírgula para separar o índice inicial da contagem:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # Saída: 20, 30, 40Isso extrai 3 elementos começando a partir do índice 1. O primeiro número é a posição inicial, e o segundo é a quantidade de elementos que você deseja.
Esta abordagem é especialmente útil quando você sabe exatamente de quantos elementos precisa:
letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]
puts first_two # Saída: a, bÍndices negativos também funcionam aqui. Você pode começar pelo final do array:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # Saída: blue, yellowSe você solicitar mais elementos do que os disponíveis, o Ruby simplesmente retorna o que existe sem gerar um erro:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # Saída: 2, 3Escolha este método quando você souber a contagem de elementos necessários e use intervalos quando souber as posições exatas.
Desafio
FácilLeia três entradas:
- Uma única linha de números inteiros separados por vírgulas (ex:
5,10,15,20,25,30,35,40) - Um índice inicial (inteiro)
- O número de elementos a serem extraídos (inteiro)
Divida a primeira entrada em um array de inteiros. Use o índice inicial e a contagem para fatiar o array usando a sintaxe de índice e comprimento (index-and-length), depois imprima cada elemento da parte fatiada em sua própria linha.
Por exemplo, se as entradas forem 5,10,15,20,25,30,35,40, 2 e 4, a saída deve ser:
15
20
25
30Se as entradas forem 100,200,300,400,500, 0 e 2, a saída deve ser:
100
200Se as entradas forem a,b,c,d,e,f,g, -3 e 2, a saída deve ser:
e
fSe as entradas forem 10,20,30, 1 e 10, a saída deve ser:
20
30Folha de consulta
Ruby permite fatiar arrays usando um índice inicial e um comprimento. A sintaxe usa uma vírgula para separar o índice inicial da contagem:
array[start_index, length]Exemplo básico:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # Saída: 20, 30, 40O primeiro número é a posição inicial, e o segundo é quantos elementos extrair.
Índices negativos funcionam com esta sintaxe, permitindo que você comece pelo final do array:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # Saída: blue, yellowSe você solicitar mais elementos do que os disponíveis, o Ruby retorna o que existe sem gerar um erro:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # Saída: 2, 3Experimente você mesmo
# Ler as entradas
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i
# Dividir a entrada em um array
arr = input_line.split(',')
# TODO: Escreva seu código abaixo para fatiar o array usando a sintaxe de índice e comprimento
# e imprimir cada elemento em sua própria linhaEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operadores Lógicos Parte 47Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoO Método FizzBuzz13Arrays Avançados
Fatiamento de Arrays com IntervalosFatiamento de Arrays com ÍndicesOperadores de ArrayMétodo Include?2Variáveis e Tipos de Dados
Números e VariáveisTipo de Dado StringTipo de Dado BooleanTipo de Dado SymbolVerificando Tipos de DadosConvenções de NomenclaturaRecapitulação - Criação de Variáveis5Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Calculadora SimplesIf - Else AninhadoInstrução Unless8Laços de Repetição
Loop For com IntervalosLoop WhileBreakNextRecapitulação - FatorialLoop TimesLoop UntilLoops AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com putsSaída com print e pSaída com VariáveisEntrada com getsMétodo chompConversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Métodos
Definindo um MétodoParâmetros de MétodoValores de RetornoRecapitulação - Método SigmaRecapitulação - Método de ValidaçãoValores de Parâmetro Padrão15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa