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

الشبكة الأسبوعية

جزء من قسم المنطق والتدفق في رحلة 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 عند التعيين. الأيام الخارجة عن النطاق ستؤدي إلى تعطل البرنامج، لذا ثق بتنسيق الإدخال.

challenge icon

التحدي

متوسط

اقرأ سطراً واحداً من المدخلات: قائمة مفصولة بفاصلة من مدخلات 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>'
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: Playground لـ Swift