Guardar contactos
Parte de la sección Lógica y flujo del Journey de Kotlin de Coddy. Lección 21 de 63.
Construye una agenda de contactos que guarde, encuentre y elimine contactos, después enumere nombres e informe de estadísticas. Un mapa mutable almacena un teléfono por nombre. Los comandos de una llamada comparten ese mapa; cada nueva llamada comienza de cero. El código de entrada proporcionado lee tres listas del mismo tamaño. Implementa el bucle de comandos en contactBook.
val contacts = mutableMapOf<String, String>()Desafío
DifícilCompleta contactBook con los parámetros commands: List<String>, names: List<String>, phones: List<String>. Construye un libro de contactos en memoria que comience vacío en cada llamada a la función. Las tres listas tienen la misma longitud, como máximo 100. En cada índice, commands selecciona una operación; names y phones proporcionan sus argumentos. Los nombres son palabras ASCII en minúsculas no vacías; los teléfonos son cadenas de dígitos no vacías y deben mantenerse como cadenas para conservar los ceros iniciales. Cada comando produce una respuesta en la lista devuelta. Admite PUT: guarda o reemplaza el teléfono del nombre proporcionado y después responde saved. Las entradas solo contienen comandos compatibles con este paso. Las cadenas de argumentos ignoradas pueden ser cualquier texto no vacío.
A menos que se indiquen límites más estrictos arriba, las colecciones contienen como máximo 100 elementos en cada nivel, y los argumentos enteros y los valores enteros de las colecciones están entre -1000 y 1000. El texto proporcionado para el análisis puede incluir representaciones no válidas o fuera de rango, tal como se describe.
Devuelve un valor de tipo List<String>. Conserva el código de entrada/salida proporcionado. Lee los argumentos escalares, uno por línea; una lista comienza con su cantidad, seguida de sus elementos, y un mapa comienza con la cantidad de sus entradas, seguida de cada clave y valor. Las listas anidadas repiten el formato de cantidad y elementos para cada fila. El main proporcionado imprime el valor devuelto seguido de un salto de línea. Las listas utilizan el formato estándar entre corchetes de Kotlin; no imprimas etiquetas adicionales.
Pruébalo tú mismo
fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
// Escribe tu solución aquí.
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))
}Todas las lecciones de Lógica y flujo
1Mapas Parte 1
Crear mapasBúsquedas seguras en mapasActualizar mapasComprobar clavesRepaso - Stock Desk4Colecciones anidadas
Listas de listasRecorrer filasResúmenes de filasAplanar listas anidadasRepaso: filas de asientos7Flujos de colecciones
Transformar con MapFiltrar valoresProbar reglas de coleccionesAcumular con FoldRepaso: totales aprobados2Mapas, parte 2
Iterar entradas de mapasClaves y valoresMapas de frecuenciaMapas anidadosRepaso: informe de frecuencias5Proyecto - Agenda de contactos
Guardar contactosBuscar contactos3Conjuntos y pertenencia
Crear conjuntosActualizar conjuntosOperaciones con conjuntosComprobación de subconjuntosRepaso: invitados al evento6Valores de función
Escribir lambdasTipos de funciónPasar funcionesVariables capturadasRepaso - Puntuación configurablePractica por tu cuenta: Playground de Kotlin