Latar Belakang
Tugasnya sederhana tetapi setiap programmer telah mengimplementasikannya setidaknya sekali. Stackoverflow memiliki banyak sampel, tetapi apakah mereka cukup pendek untuk menang?
Cerita masalah
Anda adalah programmer pemarah yang diberi tugas menerapkan input ukuran file untuk pengguna. Karena pengguna tidak menggunakan byte, setiap orang hanya akan memasukkan "1M", "1K", "3G", "3,14M" - tetapi Anda membutuhkan byte! Jadi, Anda menulis program untuk melakukan konversi.
Kemudian manajer Anda memberi Anda lusinan laporan pengguna dengan keluhan tentang sejumlah besar aneh dalam ukuran input file. Sepertinya Anda perlu mengkode konversi balik juga.
Apa yang perlu kamu lakukan?
Inilah triknya: Anda harus menerapkan konversi dua arah dalam satu bagian kode. Dua fungsi terpisah digunakan sesuai kebutuhan? Nah, itu terlalu sederhana - mari kita buat, pendek!
Untuk keperluan tantangan ini, "kilobyte" berarti 1024 byte, "megabyte" berarti 1024 * 1024 = 1048576 byte, dan "gigabytle" berarti 1024 * 1024 * 1024 = 1073741824 byte.
Uji data
Input -> Output
5 -> 5
1023 -> 1023
1024 -> 1K
1K -> 1024
1.5K -> 1536
1536 -> 1.5K
1048576 -> 1M
1M -> 1048576
Aturan
- Nilai tes tidak akan melebihi 2 * 1024 * 1024 * 1024 atau 2G
- Postfix berikut digunakan oleh pengguna: K untuk kilobyte, M untuk megabyte, G untuk gigabyte
- Kode tidak diperlukan untuk bekerja dengan angka negatif
- Jangan gunakan perpustakaan eksternal (mis.
BCMathDalam PHP) selain yang dibundel (mis.math.h) - Celah standar tidak diijinkan
- Kode seharusnya tidak menghasilkan apa pun di stderr
- Program Anda dapat mengambil input dan menghasilkan output menggunakan metode standar