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, 40El 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, cAquí, 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, yellowEsto 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.
Desafío
FácilLee dos entradas:
- Una sola línea de enteros separados por comas (p. ej.,
10,20,30,40,50,60,70) - Una especificación de rango con el formato
start..endostart...end(p. ej.,2..5o1...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
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
fPrué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í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 falsoPractica por tu cuenta: Compilador de Ruby online