Menu
Coddy logo textTech

Trova contatti

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

challenge icon

Sfida

Difficile

Completa contactBook con i parametri commands: List<String>, names: List<String>, phones: List<String>. Crea una rubrica in memoria che inizi vuota a ogni chiamata della funzione. Le tre liste hanno la stessa lunghezza, al massimo 100. A ogni indice, commands seleziona un'operazione; names e phones ne forniscono gli argomenti. I nomi sono parole non vuote composte da caratteri ASCII minuscoli; i numeri di telefono sono stringhe non vuote di cifre e devono rimanere stringhe per preservare gli zeri iniziali. Ogni comando produce una risposta nella lista restituita. Mantieni tutto ciò che hai scritto nei passaggi precedenti, inclusi tutti i comandi e le risposte precedenti. Supporta PUT: salva o sostituisce il numero di telefono associato al nome fornito, quindi rispondi saved. Aggiungi FIND: rispondi con il numero di telefono memorizzato per il nome fornito, oppure missing. Il suo argomento phone viene ignorato. Gli input contengono solo comandi supportati in questo passaggio. Le stringhe degli argomenti ignorati possono essere qualsiasi testo non vuoto.

A meno che non siano specificati limiti più restrittivi sopra, 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-ed-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 contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
    val contacts = mutableMapOf<String, String>()
    val replies = mutableListOf<String>()
    for (i in commands.indices) {
        val name = names[i]
        when (commands[i]) {
            "PUT" -> {
                contacts[name] = phones[i]
                replies.add("saved")
            }
        }
    }
    return replies
}
fun main() {
    val commandsCount = readln().toInt()
    val commands = mutableListOf<String>()
    for (i0 in 0 until commandsCount) {
        val commandsItem = readLine().orEmpty()
        commands.add(commandsItem)
    }
    val namesCount = readln().toInt()
    val names = mutableListOf<String>()
    for (i0 in 0 until namesCount) {
        val namesItem = readLine().orEmpty()
        names.add(namesItem)
    }
    val phonesCount = readln().toInt()
    val phones = mutableListOf<String>()
    for (i0 in 0 until phonesCount) {
        val phonesItem = readLine().orEmpty()
        phones.add(phonesItem)
    }
    println(contactBook(commands, names, phones))
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Kotlin