Menu
Coddy logo textTech

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, 40

O 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, c

Aqui, 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, yellow

Isso 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.

challenge icon

Desafio

Fácil

Leia duas entradas:

  1. Uma única linha de números inteiros separados por vírgulas (ex: 10,20,30,40,50,60,70)
  2. Uma especificação de intervalo no formato start..end ou start...end (ex: 2..5 ou 1...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
60

Se as entradas forem 5,10,15,20,25,30 e 0...3, a saída deve ser:

5
10
15

Se as entradas forem 100,200,300,400,500 e 1..-1, a saída deve ser:

200
300
400
500

Se as entradas forem a,b,c,d,e,f e -3..-1, a saída deve ser:

d
e
f

Folha 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 linha
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 Fundamentos