Menu
Coddy logo textTech

入荷処理

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

在庫を受け取り、販売し、数量を確認してレポートを作成する Inventory プログラムを構築します。各段階では同じコマンドプロセッサを拡張します。コマンドのフィールドを解析し、マップを変更する前に数量を検証して、コマンドごとに1つの応答を返します。無効な入力の場合、在庫は変更されないようにします。

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

チャレンジ

難しい

commands: List<String> をパラメーターとして受け取る runInventory を完成させてください。関数を呼び出すたびに空の状態から始まる在庫を構築します。各コマンドは、| で区切られたフィールドを持つ1つの文字列です。商品の名前は小文字の ASCII 単語です。コマンドは最大100個です。各コマンドをリテラルの区切り文字で分割してください。コマンドには、操作に応じた正しい数のフィールドが常に含まれています。コマンドごとに1つの応答を返してください。数量は解析する前にトリミングされます。有効な数量は0から1000の範囲です。無効な数値テキスト、Int の範囲外のテキスト、負の数量、または1000を超える数量の場合は、状態を変更せずに invalid を返してください。ADD|item|quantity をサポートしてください。有効な数量を、その商品の最初は0である在庫に加算し、added と応答します。0を加算した場合でも商品は作成されます。この段階で入力に使用されるのは、サポートされている操作のみです。

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

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

自分で試してみよう

fun runInventory(commands: 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)
    }
    println(runInventory(commands))
}

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

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