Menu
Coddy logo textTech

Slicing de Arrays con Rangos

Parte de la sección Fundamentos del Journey de Ruby de Coddy — lección 69 de 88.

A veces necesitas extraer una porción de un array en lugar de acceder a elementos individuales. Ruby te permite segmentar (slice) arrays usando rangos, lo que crea un nuevo array que contiene solo los elementos que especifiques.

Para segmentar un arreglo con un rango, coloca el rango dentro de corchetes:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]

puts slice  # Salida: 20, 30, 40

El rango 1..3 incluye elementos en los índices 1, 2 y 3. Recuerda que los índices de los arreglos comienzan en 0, por lo que el índice 1 es el segundo elemento.

También puedes usar el rango de tres puntos (...) para excluir el último índice:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]

puts slice  # Salida: a, b, c

Aquí, 0...3 incluye los índices 0, 1 y 2, pero se detiene antes del índice 3.

Los índices negativos también funcionan con rangos. Cuentan desde el final del array, donde -1 es el último elemento:

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]

puts slice  # Salida: green, blue, yellow

Esto extrae todo desde el índice 1 hasta el último elemento, lo cual es útil cuando quieres omitir el primer elemento sin conocer la longitud del array.

challenge icon

Desafío

Fácil

Lee dos entradas:

  1. Una sola línea de enteros separados por comas (por ejemplo, 10,20,30,40,50,60,70)
  2. Una especificación de rango en el formato start..end o start...end (por ejemplo, 2..5 o 1...4)

Divide la primera entrada en un arreglo de enteros. Luego, utiliza el rango de la segunda entrada para obtener una porción (slice) del arreglo e imprime cada elemento de la porción obtenida en su propia línea.

La entrada del rango utilizará dos puntos (..) para incluir el índice final, o tres puntos (...) para excluirlo.

Por ejemplo, si las entradas son 10,20,30,40,50,60,70 y 2..5, la salida debería ser:

30
40
50
60

Si las entradas son 5,10,15,20,25,30 y 0...3, la salida debería ser:

5
10
15

Si las entradas son 100,200,300,400,500 y 1..-1, la salida debería ser:

200
300
400
500

Si las entradas son a,b,c,d,e,f y -3..-1, la salida debería ser:

d
e
f

Hoja de referencia

Para extraer una porción de un arreglo, utiliza rangos dentro de corchetes:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
# Retorna [20, 30, 40] (índices 1, 2 y 3)

Usa dos puntos (..) para incluir el índice final:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0..2]
# Retorna ["a", "b", "c"] (índices 0, 1 y 2)

Usa tres puntos (...) para excluir el índice final:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
# Retorna ["a", "b", "c"] (índices 0, 1 y 2, se detiene antes del 3)

Los índices negativos cuentan desde el final del arreglo (-1 es el último elemento):

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
# Retorna ["green", "blue", "yellow"] (desde el índice 1 hasta el último elemento)

Pruébalo tú mismo

# Leer los valores separados por comas
input_values = gets.chomp

# Leer la especificación del rango
range_spec = gets.chomp

# TODO: Escribe tu código a continuación
# 1. Dividir input_values en un arreglo
# 2. Analizar range_spec para determinar el inicio, el fin y si usar .. o ...
# 3. Segmentar el arreglo usando el rango apropiado
# 4. Imprimir cada elemento de la parte segmentada en su propia línea
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos