Menu
Coddy logo textTech

Desafío - Análisis de palabras

Parte de la sección Lógica y flujo del Journey de Kotlin de Coddy. Lección 61 de 63.

challenge icon

Desafío

Experto

Completa wordAnalytics con parámetros lines: List<String>. Extrae todos los grupos consecutivos de letras ASCII con [A-Za-z]+ de cada línea, conviértelos a minúsculas y cuenta las apariciones. Devuelve entradas con el formato word=count ordenadas por frecuencia decreciente; en caso de empate, ordénalas alfabéticamente. Los dígitos y la puntuación separan las palabras.

A menos que se indiquen límites más estrictos arriba, 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, según se describe.

Devuelve un valor de tipo List<String>. 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 la cantidad de sus 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 wordAnalytics(lines: List<String>): List<String> {
    // Escribe tu solución aquí.
    return emptyList()
}
fun main() {
    val linesCount = readln().toInt()
    val lines = mutableListOf<String>()
    for (i0 in 0 until linesCount) {
        val linesItem = readLine().orEmpty()
        lines.add(linesItem)
    }
    println(wordAnalytics(lines))
}

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Playground de Kotlin