Menu
Coddy logo textTech

Combinare i confronti

Fa parte della sezione Logica e flusso del percorso Kotlin di Coddy. Lezione 37 di 63.

Usa sortedWith per fornire un comparatore. compareBy<String> { it.length } confronta le lunghezze delle parole; concatenando .thenBy { it } si confronta la parola stessa quando le lunghezze sono uguali. Le chiavi di confronto successive vengono usate solo quando tutte quelle precedenti sono uguali.

All'interno di main:

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

La lunghezza mette prima a; il confronto alfabetico risolve la parità tra le stringhe di due caratteri.

thenBy risolve le parità senza sostituire la chiave di confronto precedente.

challenge icon

Sfida

Medio

Completa wordOrder con il parametro words: List<String>. Ordina le parole ASCII in minuscolo per lunghezza crescente, poi in ordine alfabetico in caso di parità.

A meno che sopra non siano specificati limiti più rigorosi, le raccolte contengono al massimo 100 elementi a ogni livello e gli argomenti interi e i valori interi delle raccolte sono compresi tra -1000 e 1000. Il testo fornito per l’analisi può includere rappresentazioni non valide o fuori intervallo, come descritto.

Restituisci un valore di tipo List<String>. Mantieni il codice di input/output fornito. Legge gli argomenti scalari uno per riga; una lista inizia con il suo conteggio seguito dai suoi elementi, e una mappa inizia con il conteggio delle sue voci seguito da ciascuna chiave e valore. Le liste annidate ripetono il formato conteggio-elementi per ogni riga. Il main fornito stampa il valore restituito seguito da un carattere di nuova riga. Le liste usano il formato standard tra parentesi quadre di Kotlin; non stampare etichette aggiuntive.

Provalo tu

fun wordOrder(words: List<String>): List<String> {
    // Scrivi qui la tua soluzione.
    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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Kotlin