Menu
Coddy logo textTech

連絡先名を一覧表示する

CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 24/63。

challenge icon

チャレンジ

難しい

パラメーター commands: List<String>、names: List<String>、phones: List<String>を使用して contactBook を完成させてください。各関数呼び出しのたびに空の状態から始まる、メモリ内の連絡先帳を構築します。3つのリストの長さは等しく、最大100です。各インデックスで、commands が操作を選択し、names と phones がその引数を提供します。名前は空でない小文字のASCII単語です。電話番号は空でない数字列であり、先頭のゼロを保持するため文字列のまま扱う必要があります。すべてのコマンドは、返されるリストに1つの応答を生成します。以前の手順で記述した内容をすべて保持し、それまでのすべてのコマンドと応答も含めてください。PUTをサポートします。指定された名前の電話番号を保存または置き換え、その後 saved を返します。FINDを追加します。指定された名前に保存されている電話番号を返し、存在しない場合は missing を返します。電話番号の引数は無視します。REMOVEを追加します。指定された名前を削除し、存在していた場合は removed、それ以外の場合は missing を返します。電話番号の引数は無視します。LISTを追加します。保存されている名前をソートしたリストを、Kotlin の標準的な角括弧形式で返します。たとえば [ada, bo] のようになり、空の場合は [] になります。両方の引数値は無視します。この1つの応答文字列を作成するには contacts.keys.sorted().toString() を使用してください。入力には、この手順でサポートされるコマンドのみが含まれます。無視される引数文字列には、空でない任意のテキストを指定できます。

上記でより厳しい範囲が指定されていない限り、各階層のコレクションには最大100個の要素が含まれ、整数の引数および整数のコレクション値は -1000 から 1000 の範囲です。解析対象として提供されるテキストには、説明されているように、無効な形式や範囲外の形式が含まれる場合があります。

型 List<String> の値を返してください。提供された入力/出力コードをそのまま使用してください。スカラー引数は1行に1つ読み取ります。リストは個数に続いて各要素が並び、マップはエントリ数に続いて各キーと値が並びます。ネストされたリストでは、各行について個数と要素の形式が繰り返されます。提供された main は、戻り値の後に改行を1つ出力します。リストには Kotlin の標準的な角括弧形式を使用し、追加のラベルは出力しないでください。

自分で試してみよう

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")
            }
            "FIND" -> replies.add(contacts[name] ?: "missing")
            "REMOVE" -> {
                if (contacts.containsKey(name)) {
                    contacts.remove(name)
                    replies.add("removed")
                } else replies.add("missing")
            }
        }
    }
    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))
}

ロジックとフローのすべてのレッスン

自分で練習してみよう: Kotlinプレイグラウンド