Fatiamento de Arrays com Intervalos
Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 69 de 88.
Às vezes, você precisa extrair uma parte de um array em vez de acessar elementos individuais. O Ruby permite fatiar arrays usando intervalos (ranges), o que cria um novo array contendo apenas os elementos que você especificar.
Para fatiar um array com um intervalo, coloque o intervalo dentro de colchetes:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
puts slice # Saída: 20, 30, 40O intervalo 1..3 inclui elementos nos índices 1, 2 e 3. Lembre-se de que os índices de array começam em 0, então o índice 1 é o segundo elemento.
Você também pode usar o intervalo de três pontos (...) para excluir o último índice:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
puts slice # Saída: a, b, cAqui, 0...3 inclui os índices 0, 1 e 2, mas para antes do índice 3.
Índices negativos também funcionam com intervalos. Eles contam a partir do final do array, onde -1 é o último elemento:
colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
puts slice # Saída: green, blue, yellowIsso extrai tudo do índice 1 até o último elemento, o que é útil quando você deseja pular o primeiro elemento sem saber o comprimento do array.
Desafio
FácilLeia duas entradas:
- Uma única linha de números inteiros separados por vírgulas (ex:
10,20,30,40,50,60,70) - Uma especificação de intervalo no formato
start..endoustart...end(ex:2..5ou1...4)
Divida a primeira entrada em um array de inteiros. Em seguida, use o intervalo da segunda entrada para fatiar o array e imprimir cada elemento da parte fatiada em sua própria linha.
A entrada do intervalo usará dois pontos (..) para incluir o índice final, ou três pontos (...) para excluí-lo.
Por exemplo, se as entradas forem 10,20,30,40,50,60,70 e 2..5, a saída deve ser:
30
40
50
60Se as entradas forem 5,10,15,20,25,30 e 0...3, a saída deve ser:
5
10
15Se as entradas forem 100,200,300,400,500 e 1..-1, a saída deve ser:
200
300
400
500Se as entradas forem a,b,c,d,e,f e -3..-1, a saída deve ser:
d
e
fFolha de consulta
Para extrair uma parte de um array, use intervalos (ranges) dentro de colchetes:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
# Returns [20, 30, 40] (indexes 1, 2, and 3)Use dois pontos (..) para incluir o índice final:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0..2]
# Returns ["a", "b", "c"] (indexes 0, 1, and 2)Use três pontos (...) para excluir o índice final:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
# Returns ["a", "b", "c"] (indexes 0, 1, and 2, stops before 3)Índices negativos contam a partir do final do array (-1 é o último elemento):
colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
# Returns ["green", "blue", "yellow"] (from index 1 to the last element)Experimente você mesmo
# Lê os valores separados por vírgula
input_values = gets.chomp
# Lê a especificação do intervalo
range_spec = gets.chomp
# TODO: Escreva seu código abaixo
# 1. Divide input_values em um array
# 2. Analisa range_spec para determinar o início, o fim e se deve usar .. ou ...
# 3. Fatiar o array usando o intervalo apropriado
# 4. Imprime cada elemento da parte fatiada 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