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.
Sfida
MedioCompleta 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))
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Mappe Parte 1
Creare mappeConsultare le mappe in modo sicuroAggiornare le mappeControllare le chiaviRiepilogo - Banco di borsa4Collezioni annidate
Liste di listeAttraversare le righeRiepiloghi delle righeAppiattire liste annidateRipasso - File di posti a sedere7Pipeline di collezioni
Trasformare con MapFiltrare i valoriVerificare le regole della collezioneAccumulare con FoldRiepilogo - Totali approvati2Mappe Parte 2
Iterare sulle voci delle mappeChiavi e valoriMappe di frequenzaMappe annidateRiepilogo - Report delle frequenze5Progetto - Rubrica
Salva contattiTrova contatti8Ordinare e raggruppare
Ordinare in base a una chiaveCombinare i confrontiRaggruppare i valoriAssociare in base a una chiaveRiepilogo - Classifica per lunghezza3Insiemi e appartenenza
Creare insiemiAggiornare gli insiemiOperazioni sugli insiemiVerificare i sottoinsiemiRiepilogo - Ospiti dell'evento6Valori delle funzioni
Scrivere funzioni lambdaTipi di funzionePassare funzioniVariabili catturateRiepilogo - Punteggio configurabileEsercitati da solo: Playground Kotlin