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, 40El 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, cAquí, 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, yellowEsto 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.
Desafío
FácilLee dos entradas:
- Una sola línea de enteros separados por comas (por ejemplo,
10,20,30,40,50,60,70) - Una especificación de rango en el formato
start..endostart...end(por ejemplo,2..5o1...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
60Si las entradas son 5,10,15,20,25,30 y 0...3, la salida debería ser:
5
10
15Si las entradas son 100,200,300,400,500 y 1..-1, la salida debería ser:
200
300
400
500Si las entradas son a,b,c,d,e,f y -3..-1, la salida debería ser:
d
e
fHoja 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íneaEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operadores lógicos Parte 47Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario10FizzBuzz con un giro
Descripción general del juegoEl método FizzBuzz13Arrays Avanzados
Slicing de Arrays con RangosSlicing de Arrays con ÍndicesOperadores de ArraysMétodo Include?2Variables y tipos de datos
Números y variablesTipo de dato StringTipo de dato BooleanTipo de dato SymbolComprobación de tipos de datosConvenciones de nomenclaturaResumen: Creación de variables5Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleIf - Else anidadosSentencia Unless8Bucles
Bucle For con rangosBucle WhileBreakNextRepaso - FactorialBucle TimesBucle UntilBucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosOperador móduloAtajos aritméticosResumen - Matemáticas simplesOperadores de comparación6Entrada y Salida Básica
Salida con putsSalida con print y pSalida con variablesEntrada con getsMétodo chompConversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso