Menu
Coddy logo textTech

Enregistrer les contacts

Fait partie de la section Logique et flux du Journey Kotlin de Coddy. Leçon 21 sur 63.

Créez un carnet de contacts qui enregistre, recherche et supprime des contacts, puis répertorie les noms et fournit des statistiques. Une map mutable stocke un numéro de téléphone par nom. Les commandes d’un même appel partagent cette map  chaque nouvel appel repart de zéro. Le code d’entrée fourni lit trois listes de même taille. Implémentez la boucle de commandes dans contactBook.

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

Défi

Difficile

Complétez contactBook avec les paramètres commands: List<String>, names: List<String>, phones: List<String>. Construisez un carnet de contacts en mémoire, vide au début de chaque appel de fonction. Les trois listes ont la même longueur, au maximum 100. À chaque index, commands sélectionne une opération ; names et phones fournissent ses arguments. Les noms sont des mots ASCII non vides en minuscules ; les numéros de téléphone sont des chaînes non vides de chiffres et doivent rester des chaînes afin de préserver les zéros initiaux. Chaque commande produit une réponse dans la liste retournée. Prenez en charge PUT : enregistrez ou remplacez le numéro de téléphone associé au nom fourni, puis répondez saved. Les entrées contiennent uniquement des commandes prises en charge à cette étape. Les chaînes d’arguments ignorées peuvent être du texte non vide quelconque.

Sauf indication de limites plus strictes ci-dessus, les collections contiennent au plus 100 éléments à chaque niveau, et les arguments entiers ainsi que les valeurs entières des collections sont compris entre -1000 et 1000. Le texte fourni pour l’analyse peut contenir des représentations incorrectes ou hors limites, comme indiqué.

Retournez une valeur de type List<String>. Conservez le code d’entrée/sortie fourni. Il lit les arguments scalaires à raison d’un par ligne ; une liste commence par son nombre d’éléments, suivi de ses éléments, et une map commence par son nombre d’entrées, suivi de chaque clé et de chaque valeur. Les listes imbriquées reprennent le format nombre d’éléments puis éléments pour chaque ligne. Le main fourni affiche la valeur retournée suivie d’un saut de ligne. Les listes utilisent le format standard entre crochets de Kotlin ; n’affichez aucun libellé supplémentaire.

Essayez vous-même

fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
    // Écrivez votre solution ici.
    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))
}

Toutes les leçons de Logique et flux

Entraînez-vous par vous-même : Playground Kotlin