Menu
Coddy logo textTech

Log Toplayıcı

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 55 / 56.

challenge icon

Görev

Orta

Eriş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:

  1. 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; burada count o seviyedeki geçerli girişlerin sayısı ve bytes ise bunların bayt toplamıdır.
  2. 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.
  3. 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: 2

Kendin 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