Menu
Coddy logo textTech

Ricevere le scorte

Fa parte della sezione Logica e flusso del percorso Kotlin di Coddy. Lezione 56 di 63.

Crea un programma di inventario che riceve e vende scorte, controlla le quantità e genera rapporti. Ogni fase estende lo stesso processore di comandi. Analizza i campi dei comandi, convalida le quantità prima di modificare la mappa e restituisci una risposta per ogni comando. L’input non valido non deve modificare le scorte.

val fields = "ADD|pen|3".split("|")
challenge icon

Sfida

Difficile

Completa runInventory con il parametro commands: List<String>. Crea un inventario che inizi vuoto a ogni chiamata della funzione. Ogni comando è una stringa con campi separati da |. I nomi degli articoli sono parole ASCII in minuscolo. Ci sono al massimo 100 comandi. Dividi ogni comando usando il separatore letterale; i comandi hanno sempre il numero corretto di campi per la rispettiva operazione. Restituisci una risposta per ogni comando. Le quantità vengono eliminate degli spazi iniziali e finali prima dell'analisi; gli importi validi sono compresi tra 0 e 1000. Testo numerico non valido, testo fuori dall'intervallo rappresentabile da Int, quantità negative o quantità superiori a 1000 producono invalid senza modificare lo stato. Supporta ADD|item|quantity: aggiungi un importo valido alle scorte di quell'articolo, inizialmente pari a zero, e rispondi added. Anche l'aggiunta di zero crea l'articolo. L'input usa solo le operazioni supportate in questa fase.

A meno che sopra non siano specificati limiti più restrittivi, le raccolte contengono al massimo 100 elementi a ogni livello, e gli argomenti interi e i valori interi delle raccolte sono compresi tra -1000 e 1000. Il testo fornito per l'analisi può includere rappresentazioni non valide o fuori intervallo, come descritto.

Restituisci un valore di tipo List<String>. Mantieni il codice di input/output fornito. Legge gli argomenti scalari uno per riga; una lista inizia con il suo conteggio seguito dagli elementi, e una mappa inizia con il conteggio delle voci seguito da ogni chiave e valore. Le liste annidate ripetono il formato conteggio-ed-elementi per ogni riga. Il main fornito stampa il valore restituito seguito da un carattere di nuova riga. Le liste usano il formato standard di Kotlin tra parentesi quadre; non stampare etichette aggiuntive.

Provalo tu

fun runInventory(commands: List<String>): List<String> {
    // Scrivi qui la tua soluzione.
    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))
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Kotlin