تجميع القيم
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy. الدرس 16 من 56.
نمط الفهرس الفرعي الافتراضي هو الأساس لشكلين شائعين في الحياة اليومية.
عداد التكرار: احسب عدد مرات ظهور كل مفتاح.
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]التجميع في مجموعات: اجمع القيم ضمن مفتاح مُشتق:
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"]]القيمة الافتراضية لحالة التجميع هي مصفوفة فارغة. تُستخدم قيمة default: فقط عندما يكون المفتاح مفقودًا، ثم يغيّر الجانب الأيمن الإدخال في مكانه.
التحدي
متوسطاقرأ سطرًا واحدًا من الإدخال: قائمة كلمات مفصولة بفواصل.
اطبع، بهذا الترتيب:
- سطرًا واحدًا لكل طول كلمة يظهر في الإدخال، مرتبًا من الأقصر إلى الأطول، بالتنسيق
<length>: <count>حيث تكونcountهي عدد الكلمات التي ظهرت بهذا الطول Most common length: <n>حيث تكونnهي القيمة التي لها أعلى count. عند التعادل، اختر الطول shorter.
بالنسبة للإدخال hi,hello,yo,hey,bonjour,bye، يكون الناتج:
2: 2
3: 2
5: 1
7: 1
Most common length: 2يظهر الطولان 2 و3 مرتين لكل منهما. تم كسر التعادل باختيار shorter، لذلك يفوز 2.
جرّب بنفسك
let words = readLine()!.components(separatedBy: ",")
// TODO: عدّ الكلمات حسب الطول؛ اطبع مرتّبة؛ اطبع الأكثر شيوعاً (عند التعادل: الأقصر)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلماتتدرّب بنفسك: Playground لـ Swift