Log Toplayıcı
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 55 / 56.
Görev
OrtaErişim günlüklerini işliyorsunuz. Tek bir satır girdi okuyun: virgülle ayrılmış level:user:bytes girişlerinden oluşan bir liste.
Bazı girişler hatalıdır ve atlanmalıdır: bytes kısmı tam sayı olarak ayrıştırılamayan veya level kısmı INFO, WARN, ERROR seçeneklerinden biri olmayan (büyük-küçük harf duyarlı) tüm girişler.
Şu sırayla yazdırın:
- En az bir kez görünen her seviye için bir satır, şu sabit sırada sıralanmış:
ERROR,WARN,INFO. Her satır<level>: <count> (<bytes>)şeklindedir; buradacounto seviyedeki geçerli girişlerin sayısı vebytesise bunların bayt toplamıdır. Top user: <name> (<bytes>): tüm geçerli girişler arasında en fazla toplam bayta sahip olan kullanıcı. Eşitlik durumunda isme göre alfabetik olarak sıralayın.- Hatalı girişlerin sayısını içeren
Skipped: <n>.
INFO:alice:100,WARN:bob:bad,ERROR:alice:50,INFO:bob:200,DEBUG:cara:10,INFO:alice:75 girdisi için çıktı şöyledir:
ERROR: 1 (50)
INFO: 3 (375)
Top user: alice (225)
Skipped: 2Kendin dene
let entries = readLine()!.components(separatedBy: ",")
let order = ["ERROR", "WARN", "INFO"]
let validLevels: Set<String> = ["INFO", "WARN", "ERROR"]
// TODO: her bir girişi ayrıştırın, hatalı olanları atın, seviye başına + kullanıcı başına biriktirin;
// seviyeleri sabit sırada yazdırın (yalnızca görülmüşse), en üst kullanıcıyı, ardından Atlanan sayısını yazdırın
Mantık ve Akış bölümündeki tüm dersler
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri