Menu
CoddyTech

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 parte de una matriz en lugar de acceder a elementos individuales. Ruby te permite obtener partes de matrices mediante rangos, lo que crea una nueva matriz que contiene solo los elementos que especificas.

Para obtener una porción de un arreglo mediante un rango, coloca el rango entre 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 las matrices empiezan en 0, así que el índice 1 corresponde al 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  # Imprime: 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 los rangos. Cuentan desde el final del arreglo, 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 resulta útil cuando quieres omitir el primer elemento sin conocer la longitud del arreglo.

challenge icon

Desafío

Fácil

Lee dos entradas:

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

Divide la primera entrada en un arreglo de enteros. Después, usa el rango de la segunda entrada para extraer una porción del arreglo e imprimir cada elemento de esa porción en su propia línea.

La entrada del rango usará 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

Pruébalo tú mismo

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

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

# TODO: Escribe tu código a continuación
# 1. Divide input_values en un arreglo
# 2. Analiza range_spec para determinar el inicio, el final y si se debe usar .. o ...
# 3. Extrae una porción del arreglo usando el rango adecuado
# 4. Imprime cada elemento de la porción extraída 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

Practica por tu cuenta: Compilador de Ruby online