Recorrer filas
Parte de la sección Lógica y flujo del Journey de Kotlin de Coddy. Lección 17 de 63.
Usa un bucle externo para las filas y un bucle interno para los valores. Iterar directamente sobre cada fila permite admitir de forma natural diferentes longitudes de fila y filas vacías, sin asumir un ancho rectangular.
Dentro de main:
val rows = listOf(listOf(2, 3), emptyList(), listOf(4))
var total = 0
for (row in rows) {
for (value in row) total += value
}
println(total)La fila vacía no aporta nada; las otras filas aportan cinco y cuatro.
Recorre los elementos reales de cada fila en lugar de asumir un ancho fijo.
Desafío
IntermedioCompleta gridTotal con los parámetros grid: List<List<Int>>. Suma cada valor de cada fila. Se permiten filas vacías y una lista exterior vacía.
A menos que se indiquen límites más estrictos anteriormente, las colecciones contienen como máximo 100 elementos en cada nivel, y los argumentos enteros y los valores enteros de las colecciones están entre -1000 y 1000. El texto proporcionado para el análisis puede incluir representaciones no válidas o fuera de rango, tal como se describe.
Devuelve un valor de tipo Int. Conserva el código de entrada/salida proporcionado. Lee los argumentos escalares, uno por línea; una lista comienza con su cantidad, seguida de sus elementos, y un mapa comienza con su cantidad de entradas, seguida de cada clave y valor. Las listas anidadas repiten el formato de cantidad y elementos para cada fila. El main proporcionado imprime el valor devuelto seguido de un salto de línea. Las listas utilizan el formato estándar entre corchetes de Kotlin; no imprimas etiquetas adicionales.
Pruébalo tú mismo
fun gridTotal(grid: List<List<Int>>): Int {
// Escribe tu solución aquí.
return 0
}
fun main() {
val gridCount = readln().toInt()
val grid = mutableListOf<List<Int>>()
for (i0 in 0 until gridCount) {
val gridItemCount = readln().toInt()
val gridItem = mutableListOf<Int>()
for (i1 in 0 until gridItemCount) {
val gridItemItem = readln().toInt()
gridItem.add(gridItemItem)
}
grid.add(gridItem)
}
println(gridTotal(grid))
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Mapas Parte 1
Crear mapasBúsquedas seguras en mapasActualizar mapasComprobar clavesRepaso - Stock Desk4Colecciones anidadas
Listas de listasRecorrer filasResúmenes de filasAplanar listas anidadasRepaso: filas de asientos7Flujos de colecciones
Transformar con MapFiltrar valoresProbar reglas de coleccionesAcumular con FoldRepaso: totales aprobados2Mapas, parte 2
Iterar entradas de mapasClaves y valoresMapas de frecuenciaMapas anidadosRepaso: informe de frecuencias5Proyecto - Agenda de contactos
Guardar contactosBuscar contactos3Conjuntos y pertenencia
Crear conjuntosActualizar conjuntosOperaciones con conjuntosComprobación de subconjuntosRepaso: invitados al evento6Valores de función
Escribir lambdasTipos de funciónPasar funcionesVariables capturadasRepaso - Puntuación configurablePractica por tu cuenta: Playground de Kotlin