Menu
Coddy logo textTech

Salva contatti

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

Crea una rubrica che salva, trova e rimuove i contatti, poi elenca i nomi e riporta le statistiche. Una mappa mutabile memorizza un numero di telefono per nome. I comandi eseguiti in una singola chiamata condividono quella mappa; ogni nuova chiamata inizia da zero. Il codice di input fornito legge tre liste della stessa lunghezza. Implementa il ciclo dei comandi in contactBook.

val contacts = mutableMapOf<String, String>()
challenge icon

Sfida

Difficile

Completa contactBook con i parametri commands: List<String>, names: List<String>, phones: List<String>. Crea una rubrica in memoria che inizia 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 in ASCII minuscolo; i numeri di telefono sono stringhe di cifre non vuote e devono rimanere stringhe per preservare gli zeri iniziali. Ogni comando produce una risposta nella lista restituita. Supporta PUT: salva o sostituisce il numero di telefono associato al nome fornito, poi risponde saved. Gli input contengono solo comandi supportati in questo passaggio. Le stringhe degli argomenti ignorati possono essere qualsiasi testo non vuoto.

A meno che sopra non siano specificati limiti più restrittivi, le raccolte contengono al massimo 100 elementi a ogni livello e gli argomenti interi e i valori interi nelle 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 dagli elementi, mentre una mappa inizia con il conteggio delle voci seguito da ogni 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 contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
    // Scrivi qui la tua soluzione.
    return emptyList()
}
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