Menu
Coddy logo textTech

Değerleri Gruplandırma

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

Varsayılan alt simge deseni, iki günlük şeklin temelini oluşturur.

Frekans sayacı: her bir anahtarın kaç kez göründüğünü sayın.

let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]

Bucketing: değerleri türetilmiş bir anahtar altında toplayın:

let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]

Gruplama (bucketing) durumu için varsayılan değer boş bir dizidir. default: değeri yalnızca anahtar eksik olduğunda kullanılır, ardından sağ taraf girişi yerinde değiştirir.

challenge icon

Görev

Orta

Tek bir giriş satırı okuyun: virgülle ayrılmış bir kelime listesi.

Şu sırayla yazdırın:

  1. Girişte görünen her kelime uzunluğu için, en kısadan en uzuna doğru sıralanmış, <length>: <count> biçiminde bir satır; burada count bu uzunluktaki kaç kelimenin göründüğüdür
  2. Most common length: <n>; burada n en yüksek sayıya sahip uzunluktur. Eşitlik durumunda daha kısa olan uzunluğu seçin.

hi,hello,yo,hey,bonjour,bye girişi için çıktı şöyledir:

2: 2
3: 2
5: 1
7: 1
Most common length: 2

(2 ve 3 uzunluklarının her ikisi de iki kez görünür. Eşitlik daha kısa olanla bozulur, bu nedenle 2 kazanır.)

Kopya kağıdı

Frekans sayacıdefault: 0 kullanarak her bir anahtarın oluşum sayısını sayın:

var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}

Gruplandırmadefault: [] kullanarak değerleri türetilmiş bir anahtar altında gruplandırın:

var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}

default: değeri yalnızca anahtar eksik olduğunda kullanılır; sonuç daha sonra olduğu yerde değiştirilir.

Kendin dene

let words = readLine()!.components(separatedBy: ",")

// TODO: kelimeleri uzunluklarına göre say; sıralı yazdır; en yaygın olanı yazdır (eşitlikte: daha kısa olanı)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler