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
fExperimente 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 ProgramaPratique por conta própria: Compilador de Ruby online