الشبكة الأسبوعية
جزء من قسم المنطق وتدفق التنفيذ في رحلة Swift على Coddy. الدرس 36 من 56.
حان الوقت لطباعة التقويم. لكل عادة، قم بعرض شبكة مكونة من سبعة أحرف مع X في الأيام المنجزة و . في الأماكن الأخرى.
// days = [1, 3, 5]
// يعرض: X.X.X..اصطلاح مفيد: قم ببناء الشبكة كمصفوفة من الأحرف، ثم حولها إلى String مرة واحدة.
var slots = Array(repeating: ".", count: 7)
for d in days {
slots[d - 1] = "X"
}
let row = slots.joined()days هو فهرس يبدأ بـ 1 (Mon = 1) ولكن مصفوفات Swift تبدأ بفهرس 0، لذا اطرح 1 عند التعيين. الأيام الخارجة عن النطاق ستؤدي إلى تعطل البرنامج، لذا ثق بتنسيق الإدخال.
التحدي
متوسطاقرأ سطراً واحداً من المدخلات: قائمة مفصولة بفاصلة من مدخلات habit:day. قم ببناء القاموس كما في السابق، ثم اطبع سطراً واحداً لكل عادة (مرتبة أبجدياً) بالتنسيق التالي:
<habit> |<grid>| <count>حيث أن grid هي سلسلة نصية مكونة من سبعة أحرف من X/. و count هو عدد الأيام الفريدة التي تم إنجاز العادة فيها.
للمدخلات read:1,read:3,read:5,workout:2,workout:4، تكون المخرجات:
read |X.X.X..| 3
workout |.X.X...| 2جرّب بنفسك
var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
for op in ops {
let parts = op.components(separatedBy: ":")
let day = Int(parts[1])!
if !(habits[parts[0], default: []].contains(day)) {
habits[parts[0], default: []].append(day)
}
}
// مهام: بناء شبكة من 7 خانات لكل عادة؛ طباعة '<name> |<grid>| <count>'
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلماتتدرّب بنفسك: Playground لـ Swift