Recibir existencias
Parte de la sección Lógica y flujo del Journey de Kotlin de Coddy. Lección 56 de 63.
Construye un programa de Inventario que reciba y venda existencias, compruebe las cantidades y genere informes. Cada etapa amplía el mismo procesador de comandos. Analiza los campos de los comandos, valida las cantidades antes de cambiar el mapa y devuelve una respuesta por comando. La entrada no válida debe dejar las existencias sin cambios.
val fields = "ADD|pen|3".split("|")Desafío
DifícilCompleta runInventory con los parámetros commands: List<String>. Construye un inventario que comience vacío en cada llamada a la función. Cada comando es una cadena con campos separados por |. Los nombres de los artículos son palabras ASCII en minúsculas. Hay como máximo 100 comandos. Divide cada comando usando el separador literal; los comandos siempre tienen el número correcto de campos para su operación. Devuelve una respuesta por comando. Las cantidades se recortan antes de analizarlas; los valores válidos están entre 0 y 1000. El texto numérico no válido, el texto fuera del rango de Int, las cantidades negativas o las cantidades superiores a 1000 producen invalid sin cambios en el estado. Admite ADD|item|quantity: añade una cantidad válida al inventario de ese artículo, inicialmente igual a cero, y responde added. Añadir cero también crea el artículo. La entrada utiliza únicamente las operaciones admitidas en este paso.
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 su cantidad de 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 runInventory(commands: 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)
}
println(runInventory(commands))
}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 configurable9Control de flujo avanzado
Cláusulas de guardaRomper bucles etiquetadosContinuar bucles etiquetadosFunciones recursivasRepaso: primera fila válida12Proyecto - Inventario
Recibir existenciasComprobar existenciasPractica por tu cuenta: Playground de Kotlin