Pengumpul Log
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 55 dari 56.
Tantangan
SedangKamu sedang memproses log akses. Baca satu baris input: daftar entri level:user:bytes yang dipisahkan dengan koma.
Beberapa entri tidak valid dan harus dilewati: entri apa pun yang bytes-nya tidak dapat diuraikan sebagai bilangan bulat, atau yang level-nya bukan salah satu dari INFO, WARN, ERROR (peka huruf besar-kecil).
Cetak dengan urutan berikut:
- Satu baris untuk setiap level yang muncul setidaknya sekali, diurutkan menurut urutan tetap ini:
ERROR,WARN,INFO. Setiap baris berbentuk<level>: <count> (<bytes>), dengancountsebagai jumlah entri valid pada level tersebut danbytessebagai jumlah byte-nya. Top user: <name> (<bytes>): pengguna dengan jumlah byte total terbanyak dari semua entri valid. Jika seri, urutkan berdasarkan nama secara alfabetis.Skipped: <n>dengan jumlah entri yang formatnya tidak valid.
Untuk input INFO:alice:100,WARN:bob:bad,ERROR:alice:50,INFO:bob:200,DEBUG:cara:10,INFO:alice:75, output-nya adalah:
ERROR: 1 (50)
INFO: 3 (375)
Top user: alice (225)
Skipped: 2Coba sendiri
let entries = readLine()!.components(separatedBy: ",")
let order = ["ERROR", "WARN", "INFO"]
let validLevels: Set<String> = ["INFO", "WARN", "ERROR"]
// TODO: uraikan setiap entri, buang yang tidak valid, lalu hitung jumlah per level dan per pengguna;
// tampilkan level dalam urutan tetap (hanya yang muncul), pengguna teratas, lalu jumlah Skipped
Semua pelajaran di Logika dan Alur
1Mendalami string
Jumlah dan indeksHuruf besar, huruf kecil, dan hapus spasiMencari dalam stringMemisahkan dan menggabungkanMengganti substringUlasan: Memeriksa nama pengguna4set
Membuat setGabungan dan IrisanSelisih dan Selisih SimetrisHimpunan Bagian dan Himpunan SupersetRingkasan: Filter Tag7Proyek: Pelacak Kebiasaan
Gambaran Umum ProyekTandai Selesai2Rentang dan Langkah
Rentang Tertutup vs Setengah TerbukaLangkahMetode RentangRentang dalam SwitchRangkuman: Kisi KalenderLatihan sendiri: Playground Swift