連絡先を保存する
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 21/63。
連絡先を保存、検索、削除し、その後に名前を一覧表示して統計情報を報告する連絡先帳を作成します。変更可能なマップには、名前ごとに1つの電話番号が格納されます。1回の呼び出し内のコマンドはそのマップを共有し、新しい呼び出しでは毎回新しく開始します。提供されている入力コードは、同じサイズの3つのリストを読み取ります。contactBookにコマンドループを実装してください。
val contacts = mutableMapOf<String, String>()チャレンジ
難しいパラメータ commands: List<String>、names: List<String>、phones: List<String>を受け取る contactBook を完成させてください。関数が呼び出されるたびに空の状態から始まる、メモリ上の連絡先帳を構築します。3つのリストの長さは等しく、最大100です。各インデックスで、commands が操作を選択し、names と phones がその引数を提供します。Names は空でない小文字のASCII単語です。Phones は空でない数字列であり、先頭の0を保持するため、文字列のまま扱う必要があります。各コマンドは、返されるリストに1つの応答を生成します。PUTをサポートしてください。指定された名前の電話番号を保存または置き換え、その後 saved と応答します。このステップでサポートされているコマンドのみが入力されます。無視される引数文字列には、任意の空でないテキストを使用できます。
上記でより厳しい範囲が指定されていない限り、各階層のコレクションの要素数は最大100で、整数の引数および整数のコレクション要素の値は -1000 から 1000 の間です。解析対象として与えられるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型 List<String> の値を返してください。与えられた入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取ります。リストは要素数に続いて各要素が続く形式で始まり、マップはエントリ数に続いて各キーと値が続く形式で始まります。ネストされたリストでは、各行について要素数と要素の形式を繰り返します。与えられた main は、返り値の後に改行を1つ出力します。リストにはKotlin標準の角括弧形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
// ここに解答を書いてください。
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))
}ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド