Menu
Coddy logo textTech

Combinar comparaciones

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

Usa sortedWith para proporcionar un comparador. compareBy<String> { it.length } compara las longitudes de las palabras; encadenar .thenBy { it } compara la palabra en sí cuando las longitudes coinciden. Las claves de comparación posteriores solo se usan cuando todas las claves anteriores coinciden.

Dentro de main:

val order = compareBy<String> { it.length }.thenBy { it }
println(listOf("bb", "a", "aa").sortedWith(order))

La longitud coloca primero a a; la comparación alfabética resuelve el empate entre los dos caracteres.

thenBy resuelve los empates sin reemplazar la clave de comparación anterior.

challenge icon

Desafío

Intermedio

Completa wordOrder con los parámetros words: List<String>. Ordena las palabras ASCII en minúsculas por longitud creciente y, en caso de empate, alfabéticamente.

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, tal como 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 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 wordOrder(words: List<String>): List<String> {
    // Escribe tu solución aquí.
    return emptyList()
}
fun main() {
    val wordsCount = readln().toInt()
    val words = mutableListOf<String>()
    for (i0 in 0 until wordsCount) {
        val wordsItem = readLine().orEmpty()
        words.add(wordsItem)
    }
    println(wordOrder(words))
}
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 Lógica y flujo

Practica por tu cuenta: Playground de Kotlin