Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تجميع القيم

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 16 من 56.

يعد نمط default-subscript هو الأساس لشكلين من الأشكال اليومية.

عداد التكرار: حساب عدد مرات ظهور كل مفتاح.

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): جمع القيم تحت مفتاح مشتق:

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"]]

القيمة الافتراضية لحالة التقسيم (bucketing) هي مصفوفة فارغة. تُستخدم قيمة default: فقط عندما يكون المفتاح مفقوداً، ثم يقوم الطرف الأيمن بتعديل الإدخال في مكانه.

challenge icon

التحدي

متوسط

اقرأ سطرًا واحدًا من المدخلات: قائمة كلمات مفصولة بفاصلة.

اطبع، بهذا الترتيب:

  1. سطر واحد لكل طول كلمة يظهر في المدخلات، مرتبة من الأقصر إلى الأطول، بالتنسيق <length>: <count> حيث count هو عدد الكلمات التي ظهرت بهذا الطول
  2. Most common length: <n> حيث n هو الطول الذي يملك أعلى تكرار. في حال التساوي، اختر الطول الأقصر.

للمدخلات hi,hello,yo,hey,bonjour,bye، يكون المخرج:

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

(الطولان 2 و 3 ظهرا مرتين. تم كسر التعادل باختيار الأقصر، لذا 2 هو الفائز.)

ورقة مرجعية

عداد التكرار – عدّ مرات ظهور كل مفتاح باستخدام default: 0:

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

التجميع (Bucketing) – تجميع القيم تحت مفتاح مشتق باستخدام default: []:

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

تُستخدم القيمة default: فقط عندما يكون المفتاح مفقوداً؛ ثم يتم تعديل النتيجة في مكانها.

جرّب بنفسك

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

// TODO: عد الكلمات حسب الطول؛ اطبعها مرتبة؛ اطبع الأكثر شيوعاً (في حال التساوي: الأقصر)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتدفق