Terima Stok
Termasuk bagian Logika & Alur dalam perjalanan Kotlin di Coddy. Pelajaran 56 dari 63.
Buat program Inventaris yang menerima dan menjual stok, memeriksa jumlah, serta menghasilkan laporan. Setiap tahap mengembangkan pemroses perintah yang sama. Urai field perintah, validasi jumlah sebelum mengubah map, dan kembalikan satu respons untuk setiap perintah. Input yang tidak valid tidak boleh mengubah stok.
val fields = "ADD|pen|3".split("|")Tantangan
SulitLengkapi runInventory dengan parameter commands: List<String>. Buat inventaris yang dimulai dalam keadaan kosong pada setiap pemanggilan fungsi. Setiap perintah berupa satu string dengan bagian-bagian yang dipisahkan oleh |. Nama item berupa kata ASCII huruf kecil. Ada paling banyak 100 perintah. Pisahkan setiap perintah berdasarkan pemisah literal; jumlah bagian setiap perintah selalu sesuai dengan operasinya. Kembalikan satu balasan untuk setiap perintah. Kuantitas dihapus spasi di awal dan akhirnya sebelum diuraikan; jumlah yang valid berkisar antara 0 hingga 1000. Teks numerik yang tidak valid, teks di luar rentang Int, jumlah negatif, atau jumlah di atas 1000 menghasilkan invalid tanpa mengubah status. Dukung ADD|item|quantity: tambahkan jumlah valid ke stok item tersebut, yang awalnya nol, lalu berikan balasan added. Penambahan nol tetap membuat item tersebut. Input hanya menggunakan operasi yang didukung pada tahap ini.
Kecuali batas yang lebih ketat dinyatakan di atas, koleksi berisi paling banyak 100 elemen pada setiap tingkat, dan argumen integer serta nilai integer dalam koleksi berkisar antara -1000 hingga 1000. Teks yang diberikan untuk penguraian dapat berisi representasi yang tidak valid atau di luar rentang seperti yang dijelaskan.
Kembalikan nilai bertipe List<String>. Pertahankan kode input/output yang disediakan. Kode tersebut membaca argumen skalar satu per baris; sebuah list dimulai dengan jumlah elemennya, diikuti elemen-elemennya, dan sebuah map dimulai dengan jumlah entrinya, diikuti setiap key dan value. List bersarang mengulangi format jumlah-elemen untuk setiap baris. main yang disediakan mencetak nilai pengembalian, diikuti satu newline. List menggunakan format standar Kotlin dengan tanda kurung siku; jangan mencetak label tambahan.
Coba sendiri
fun runInventory(commands: List<String>): List<String> {
// Tulis solusimu di sini.
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))
}Semua pelajaran di Logika & Alur
4Koleksi Bersarang
List Berisi ListMenelusuri BarisRingkasan BarisMeratakan List BertingkatRangkuman, Baris Tempat Duduk7Alur Pemrosesan Koleksi
Transformasi dengan MapMemfilter NilaiMenguji Aturan KoleksiMengakumulasi dengan FoldRangkuman: Total yang Disetujui2Map Bagian 2
Menelusuri Entri MapKunci dan NilaiMap FrekuensiMap BersarangRingkasan: Laporan Frekuensi5Proyek: Buku Kontak
Menyimpan KontakMencari KontakLatihan sendiri: Playground Kotlin