Menu
Coddy logo textTech

Segmentación de listas con SubList

Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 79 de 93.

A veces necesitas extraer una parte de una lista en lugar de trabajar con toda la colección. El método subList() te permite crear una vista de un rango específico de elementos a partir de una lista existente.

El método subList() acepta dos parámetros: el índice inicial (inclusivo) y el índice final (exclusivo). Esto significa que el elemento del índice inicial se incluye, pero el elemento del índice final no:

val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice)  // [20, 30, 40]

En este ejemplo, subList(1, 4) extrae elementos desde el índice 1 hasta (pero sin incluir) el índice 4. Esto nos proporciona el segundo, tercer y cuarto elementos.

La sublista resultante es una vista de la lista original, no una copia. Esto es importante de entender cuando trabajas con listas mutables, ya que los cambios en la lista original pueden afectar a la sublista.

Para la mayoría de los casos de uso con listas de solo lectura, simplemente puedes usarla para acceder a un rango de elementos:

val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek)  // [Tue, Wed, Thu]
challenge icon

Desafío

Intermedio

Recibirás una lista de enteros y dos índices que representan un rango. Extrae una sublista usando subList() e imprime la suma de los elementos extraídos.

Formato de entrada:

  • Primera línea: un entero n que representa el número de elementos
  • Siguientes n líneas: enteros que se añadirán a la lista
  • Siguiente línea: el índice inicial (inclusive)
  • Última línea: el índice final (exclusivo)

Formato de salida:

Imprime la suma de los elementos de la sublista extraída.

Ejemplo:

Si la lista es [5, 10, 15, 20, 25], con un índice inicial de 1 y un índice final de 4, la sublista sería [10, 15, 20] y la salida debería ser 45.

Pruébalo tú mismo

fun main() {
    val n = readLine()!!.toInt()
    val list = mutableListOf<Int>()
    
    repeat(n) {
        list.add(readLine()!!.toInt())
    }
    
    val startIndex = readLine()!!.toInt()
    val endIndex = readLine()!!.toInt()
    
    // TODO: Escribe tu código debajo
    // Usa subList() para extraer elementos desde startIndex hasta endIndex
    // Calcula e imprime la suma de los elementos extraídos
    
}
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: Playground de Kotlin